由于64位VC ++(2010)不支持内联汇编程序,我最近将一个70页的内联函数静态C ++库转换为直接的64位汇编程序静态库。然后,包含静态库的64位DLL无错误地构建,并正确链接到asm函数。但是,将EXE链接到DLL不会看到asm函数,为每个引用的唯一符号获取LNK2001:未解析的外部符号错误。
静态库汇编程序代码类似于:
public My_func
My_func proc
...
endp
包含静态库的DLL声明:
extern "C" __declspec(dllexport) My_func (some_arguments);
链接到DLL的EXE声明:
extern "C" My_func (some_arguments); // __declspec(dllimport) here doesn't help
我一直在使用_cdecl并且在任何地方编译为C ++代码。我的事情已经不多了,我在这里缺少什么?如果可能的话,我想避免为此添加.DEF文件。