在 Visual Studio 中将 C 模块链接到 MASM

Linking a C module to MASM in Visual Studio

我正在从事一个大型 MASM 项目(我已经使用 VS 2019 下的 ML 编译器编译了我的 MASM 代码),我想在我的 MASM 代码中调用我编写的 C 函数。我用谷歌搜索了很多,但找不到任何有用的东西。我怎样才能做到这一点?

当我试图将我的 C 源代码添加到项目并重建它时,我遇到了一堆链接错误 (LNK2019),如下所示:

LNK2019 unresolved external symbol __CrtDbgReport referenced in function __CRT_RTC_INIT

LNK2019 unresolved external symbol __CrtDbgReportW referenced in function __CRT_RTC_INITW

LNK2019 unresolved external symbol ___stdio_common_vsprintf_s referenced in function __vsprintf_s_l

Here is a screenshot of the errors window

回答我的问题

我终于想出了办法。

从您的 C/C++ 模块创建一个静态库 (.lib)。

属性 -> 项目默认值 -> 配置类型 -> 更改为.lib

然后,在您的 masm 代码中,添加以下行:

includelib your_generated_lib.lib

(一定要把你的lib文件添加到你masm代码的目录下)

并像这样将原型添加到您的函数中:

function_name PROTO C :DWORD   ;(Just an Example )

希望对您有所帮助,

奥马尔