c - 我可以从 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 ;
应用程序崩溃。
解决方案
如果我没记错的话,使用 c++ 你需要显式地导入全局变量(它是隐含的函数)。我会尝试__declspec( dllimport ) int myint;
如果你想为 windows 编译并且你已经在 linux 下使用 GCC 进行开发,我会使用 mingw 从 linux 交叉编译,我认为这要容易得多。
推荐阅读
- server - 设置高可用 Gitlab 服务器
- amazon-web-services - 仅允许文件类型但允许创建文件夹的存储桶策略
- javascript - 如何从源模式隐藏 CKEditor 小部件内容
- react-apollo-hooks - onCompleted 是否与 useMutation 一起使用?
- web-scraping - 使用 recaptcha 模拟登录过程(生成令牌)
- vba - 有没有办法获取最后一个目录,以便我可以另存为?
- swift - Moya Requests 需要很长时间才能响应
- java - 从包含文件名的字符串中提取模式
- scala - 从 H2O 中的 MOJO 模型获取模型指标
- javascript - 为什么结果是 getId:f() 而不是 123?