在c ++中使用masm编译的lib

时间:2013-05-16 07:56:34

标签: c++ assembly static-libraries masm32

我试图在masm32中创建一个lib(使用radasm)以用于其他项目...

libs源代码:

.386
.MODEL flat,stdcall
option casemap:none
.code
start:
PUBLIC HookProc
HookProc proc addy:DWORD

并在msvc中使用:

extern "C" void* HookProc(void* ptr);
#pragma comment(lib, "TestHook.lib")

然而这会产生错误:

  

Win32Project1.obj:错误LNK2019:函数_wmain中引用了未解析的外部符号_HookProc

但我在lib中看到

!<arch>
/               1368690603              0       20        `
®_HookProc@4/               1368690603              0       26        `

为什么msvc看不到lib中的这个proc? ; /这是否与@4

有关

编辑:更改为.MODEL flat, c摆脱@ 4,但仍然_HookProc已解决......

1 个答案:

答案 0 :(得分:1)

CPP:

extern "C" int GetValue(void);

int main(int argc, char*arg[])
{
    char *p = "test";
    int v = GetValue();

    return 0;
}

ASM:

.486
.model flat, C
option casemap :none

.code

GetValue PROC
    mov eax, 1234
    ret
GetValue ENDP

END