我编写了以下 C 代码来创建和导出一个结构和一个用于用值填充结构的例程。例程和结构都从 DLL 导出。
__declspec(dllexport) struct x_struct *test_structure;
__declspec(dllexport) void load_structure(void);
struct x_struct {
long x_long;
float x_float;
char *x_cstar;
struct x_struct *test_structure;
};
void load_structure(void)
{
test_structure = (struct x_struct *)CstdlibMalloc(sizeof(struct x_struct));
test_structure->x_long = 22;
test_structure->x_float = 55.0;
test_structure->x_cstar = CstrCpy("test string");
}
我在 VB 模块中声明了这样的 dll 例程:
Declare Sub load_structure Lib "Test.dll" ()
我像这样从 VB 访问例程:
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Call load_structure()
End
子
这一切都很好。我可以进入 C 例程并查看正在填充的结构变量。
我不知道如何从 DLL 中导入结构。
Declare 或 DllImportAttribute 都不允许我指定结构而不是子例程或函数。