MASM:访问从汇编全局C变量(MASM: Accessing to global C variab

2019-10-21 07:19发布

我正在写一个程序转换图像和比较处理数据的速度,在C语言和汇编。 我有3个项目:

  • 用C主体工程
  • DLL在C,将图像
  • DLL在ASM转换图像

在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访问变量线程ID。

当我尝试做相同的ASM的问题开始。 我试着像建筑extern ASMThreadID:dword在.CODE块,但它不会工作。

我得到的错误: error LNK2019: unresolved external symbol _ASMThreadID referenced in function _MyProc1

我有一种感觉,它是1-2行代码的问题,但我想不出我应该使用哪个指令。

我通过链接模块定义文件的项目,ASM和添加ASM.lib文件导入到主体工程的连接器 - >输入。

你有什么建议吗?

Answer 1:

与旧的帖子在asmcommunity.net小的帮助,我设法得到它的工作:

  • 在.ASM文件,。数据段之前:

EXTERNDEF C ASMThreadID:DWORD

  • 在段。数据:

ASMThreadID dd 0

  • 在ASM DLL的DEF文件:

LIBRARY "nameOfProject" EXPORTS ... ASMThreadID

  • 在主要的C程序头(如全局声明):

extern __declspec(dllimport) unsigned int ASMThreadID;

现在,它就像一个魅力。

在“公共”宣言送我去搜索的正确方法。 感谢您的帮助,伙计!



文章来源: MASM: Accessing to global C variable from assembly