【问题标题】:Can I import a global variable from a DLL ? Can I do this with a DEF file?我可以从 DLL 中导入全局变量吗?我可以使用 DEF 文件执行此操作吗?
【发布时间】:2020-04-16 11:00:42
【问题描述】:

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 ;

应用程序崩溃。

【问题讨论】:

    标签: c visual-c++ dll dllimport dllexport


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,它可以工作(我什至按照微软的建议在 DEF 文件中添加了数据)。我更喜欢一种不需要我处理 __declspec( dllimport/dllexport ) 的方法,但总比没有好。到目前为止,我一直在使用 mingw-gcc,但使用 mingwin,窗口的包含/库不如可视化的好/新近,我最终打开旧样式对话框而不是最新类型。
    • 我知道你的意思,关于整个 __declspec 的事情。但是,当您将代码共享给其他人以了解变量的来源时,会更容易。对于 mingw,我包括自己最新的库,它的工作量更大,但编译时容易得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2023-03-21
    • 2010-10-29
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2020-09-10
    相关资源
    最近更新 更多