【问题标题】:How to return an array of structs to Console Application from Class Library如何从类库将结构数组返回到控制台应用程序
【发布时间】:2015-05-25 06:53:55
【问题描述】:

我有一个结构:-

Test.h

typedef struct employees
{
    char* name[5];
    int empi_id;
};

Test.cpp 我创建了一个函数,我需要在这些结构中存储值。

int Disp()
{
    employees e[5];
    e[0].empi_id=10;
    e[1].empi_id=100;
    e[2].empi_id=500;
    e[3].empi_id=1000;
    e[4].empi_id=5000;
    return 0;
}

TestDll.cpp 控制台应用程序:

void main()
{
    LoadLibrary(("TestDll.dll"));

    int obj = Disp();
}

我需要将这些结构数组返回给我的控制台应用程序。我想直接在我的控制台应用程序中显示分配的值。我应该如何返回它?我可以将这些结构数组作为函数参数发送,那么我应该如何做吧。因为我需要发送一个 5 的数组。 查看下面的链接确实让我想到了将值分配给结构,但我无法在我的控制台应用程序中显示这些值。 return an array of structs or an array of struct pointers?

【问题讨论】:

  • 与 C++/CLI 有什么关系?

标签: c++ arrays dll structure


【解决方案1】:

将函数签名更改为

int Disp(employees *) ;

没关系。不好的是你如何链接你的 DLL。您可以在启动时加载它(它发生在幕后)或使用 LoadLibray,但这也需要 GetProcAddress。第一种方法更容易。它允许您像加载库一样加载 DLL。

【讨论】:

  • @marom :所以如果我使用结构作为函数参数,我可以显示存储在不同索引处的所有值,即 for(int i =0;i
  • :我访问名字有问题?? @马罗姆
  • 访问变量“name”@marom
  • 那么dll必须知道struct employees的定义。但是名称的声明看起来不对,我希望是 char name[],而不是 char *name[],它声明了一个指向 char 的指针数组。
  • 我需要五个员工姓名,因为 char 数组存储单个字符,我使用它们。我需要将此结构传递给 C#。如果我只使用 char name[],我可以将这个结构传递给 C#? ?? @马罗姆
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多