我可以从 DLL 导入全局变量吗?我可以使用 DEF 文件执行此操作吗?

Can I import a global variable from a DLL ? Can I do this with a DEF file?

gcc 对此没有问题,但我很难用 link.exe (visualc)

实现同样的事情

在dll.c,我定义

int myint = 0 ;
int myfunc ( .... ) {  ...  } ;

在 dll.h

extern int myint ;
int myfunc ( .... ) ;

在dll.def

LIBRARY mydll
EXPORTS
    myint
    myfunc

一切正常,dll 已创建,我可以 link 使用它,我的可执行文件成功调用了 myfunc()。 但是我不知道如何告诉 linker myint 是一个变量而不是一个函数。所以当我尝试

myint = 1 ;

应用程序崩溃。

如果我没记错的话,在 C++ 中你需要显式导入全局变量(它是隐含的函数)。我会尝试 __declspec( dllimport ) int myint;

如果你想为 windows 编译并且你已经在 linux 下使用 GCC 进行开发,我会使用 mingw 从 linux 交叉编译,它更容易我的意见。