我正在编写一个程序来转换图像并比较 C 语言和汇编语言处理数据的速度。我有3个项目:
- C语言的主要项目
- C 中的 DLL 来转换图像
- ASM中的DLL用于转换图像
在C DLL头文件中,我简单地写了:
#ifdef PROJEKTC_EXPORTS
#define PROJEKTC_API __declspec(dllexport)
#else
#define PROJEKTC_API __declspec(dllimport)
#endif
...
extern PROJEKTC_API unsigned int ThreadID;
PROJEKTC_API void __cdecl funkcjaC(void* Args);
包含此标头后,我可以在主项目和 C DLL 中访问变量 ThreadID。
当我尝试在 ASM 中执行相同操作时,问题就出现了。我尝试过像这样的结构extern ASMThreadID:dword
在 .code 块中,但它不起作用。
我得到的错误:error LNK2019: unresolved external symbol _ASMThreadID referenced in function _MyProc1
我感觉这只是 1-2 行代码的问题,但我不知道应该使用哪条指令。
我通过 ASM 中的模块定义文件链接项目,并将 ASM.lib 文件添加到主项目的 Linker->Input 中。
你有什么建议吗?
在 asmcommunity.net 旧帖子的帮助下,我成功地使其正常工作:
EXTERNDEF C ASMThreadID:DWORD
ASMThreadID dd 0
LIBRARY "nameOfProject"
EXPORTS
...
ASMThreadID
extern __declspec(dllimport) unsigned int ASMThreadID;
现在它就像一个魅力。
“公开”声明让我找到了正确的搜索方式。谢谢你的帮助,伙计!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)