链接C++代码与汇编代码时遭遇致命错误
MASM汇编与C++程序链接问题解决
汇编代码
.code option casemap:none public asmFunc asmFunc PROC ret ; asmFunc ENDP END
C++代码
#include <stdio.h> extern "C" { void asmFunc(void); } int main() { printf("Calling asm main!"); asmFunc(); printf("Returned from asm!"); return 0; }
操作过程与错误信息
已通过ml64 /c first.asm成功汇编生成first.obj文件,但执行cl first.cpp first.asm链接时出现如下错误:
C:\Users\jarzi\Videos\Programs\c programs\assem1>cl first.cpp first.asm
Microsoft (R) C/C++ 优化编译器版本19.00.24215.1 for x64
(C) 微软公司。保留所有权利。cl: 命令行警告 D9024: 无法识别源文件类型"first.asm",将使用目标文件
first.cpp
first.cpp(1): 致命错误 C1034: stdio.h:未指定包含文件搜索路径
问题分析与解决方法
问题原因
cl编译器无法直接处理.asm源文件,你已经手动完成汇编得到first.obj,链接阶段应使用该目标文件而非asm源文件。- 错误C1034是因为编译器未找到标准库头文件的搜索路径,通常是由于未在Visual Studio提供的开发命令行环境中执行命令。
解决步骤
- 打开Visual Studio x64 Native Tools Command Prompt(对应64位编译环境),该环境会自动配置好头文件、库文件的搜索路径。
- 执行正确的链接命令,使用已生成的目标文件:
cl first.cpp first.obj
内容的提问来源于stack exchange,提问作者Jarzis Hossain
相关产品推荐
相关产品推荐

