在 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 )
希望对您有所帮助,
奥马尔
我正在从事一个大型 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 )
希望对您有所帮助,
奥马尔