我目前正在使用visual studio。我需要建立一个Win32应用程序,需要从C函数调用一个过程,但我总是得到一个编译错误:从.c调用MASM32程序
错误3错误LNK1120:1周无法解析的外部
我把一切都降低到一个简单的主函数和简单的.asm文件与一个过程,我仍然得到相同的构建(或更确切地说,链接)的错误。我很茫然。
两者都使用cdecl约定。
的MASM32代码(在它自己的.asm文件):
.MODEL FLAT, C
.DATA
.CODE
PUBLIC memory_address
memory_address PROC
mov eax, DWORD PTR [esp]
ret
memory_address ENDP
END
它组装的罚款。 .c文件:
#include <stdlib.h>
#include <malloc.h>
#include <stdio.h>
extern int memory_address(int* ptr);
void main()
{
int *ptr = (int*)malloc(sizeof(int));
memory_address(ptr);
while (1) {}
return;
}
不知道为什么会发生这种情况。我一直在使用MASM高兴地为64位应用程序大约一年左右没有问题。但我必须做一个32位应用程序,我没有运气调用MASM32 proc memory_address()。
我急于添加我知道如何在NASM中为32位应用程序执行此操作,我知道如何为使用MASM的64位应用程序执行此操作。这完全是一个MASM32问题。任何建议都会很棒 - 但只适用于MASM32。谢谢。
我知道你想为MASM32答案,但你是怎么在NASM做到这一点?你能证明吗?只需编辑你的问题,以显示工作的NASM代码。 –
尝试添加一个前导下划线到masm过程的名称? – anatolyg
另外,它是否提到它试图找到的名称,就在您引用错误之前? – anatolyg