我编写了以下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都不允许我指定结构而不是子例程或函数。