首页 > 解决方案 > 我可以从 DLL 中导入全局变量吗?我可以使用 DEF 文件执行此操作吗?

问题描述

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,我可以链接它,我的可执行文件成功调用 myfunc()。但是我不知道如何告诉链接器 myint 是一个变量而不是一个函数。所以当我尝试

myint = 1 ;

应用程序崩溃。

标签: cvisual-c++dlldllimportdllexport

解决方案


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

如果你想为 windows 编译并且你已经在 linux 下使用 GCC 进行开发,我会使用 mingw 从 linux 交叉编译,我认为这要容易得多。


推荐阅读