1

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

4

0 回答 0