使用 Visual Studio 从 C++ 代码调用汇编程序
Call Assembly procedure from C++ code using Visual Studio
被Visual Studio、汇编和 C++ 卡住
C++:
extern "C" void asm_calculate_reals();
int main()
{
asm_calculate_reals();
return 0;
}
程序集:
PUBLIC _asm_calculate_reals
.386
.model flat, stdcall
option casemap :none
.stack 100h
.code
_asm_calculate_reals PROC
;code goes here
ret
_asm_calculate_reals ENDP
end
当我构建我的项目时,Visual Studio 报告以下错误:
error LNK1120 error lnk1120 1 unresolved externals
我真的不明白这个简单的程序部分有什么问题。
日志文件:
Build started 16.04.2015 16:53:21.
1>Project "somepath\Reals loop 3variants.vcxproj" in node 2 (targets Build).
1>Link:
somepath\link.exe /ERRORREPORT:PROMPT /OUT:"somepath\Debug\Reals loop 3variants.exe" /INCREMENTAL /NOLOGO somelibs /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"somepath\Debug\Reals loop 3variants.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"somepath\Debug\Reals loop 3variants.lib" /MACHINE:X86 /SAFESEH:NO Debug\main.obj
Debug\reals.obj
1>main.obj : error LNK2019: reference to the unresolved external symbol _asm_calculate_reals in function _main
1>somepath\Debug\Reals loop 3variants.exe : fatal error LNK1120: unresolved identifiers: 1
1>Building project "somepath\Reals loop 3variants.vcxproj" finished (targets Build) with errors.
Build failed.
尝试将此行添加到汇编代码中 - global _asm_calculate_reals
- 使其对链接器可见。 assembly 中的 "global" 关键字告诉汇编程序使标签从文件外部可见。
实际问题出在程序集源中的模型定义中。
.model flat, stdcall
- 出现错误时。
.model flat, c
- 改成这个,按预期工作。
被Visual Studio、汇编和 C++ 卡住
C++:
extern "C" void asm_calculate_reals();
int main()
{
asm_calculate_reals();
return 0;
}
程序集:
PUBLIC _asm_calculate_reals
.386
.model flat, stdcall
option casemap :none
.stack 100h
.code
_asm_calculate_reals PROC
;code goes here
ret
_asm_calculate_reals ENDP
end
当我构建我的项目时,Visual Studio 报告以下错误:
error LNK1120 error lnk1120 1 unresolved externals
我真的不明白这个简单的程序部分有什么问题。
日志文件:
Build started 16.04.2015 16:53:21.
1>Project "somepath\Reals loop 3variants.vcxproj" in node 2 (targets Build).
1>Link:
somepath\link.exe /ERRORREPORT:PROMPT /OUT:"somepath\Debug\Reals loop 3variants.exe" /INCREMENTAL /NOLOGO somelibs /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"somepath\Debug\Reals loop 3variants.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"somepath\Debug\Reals loop 3variants.lib" /MACHINE:X86 /SAFESEH:NO Debug\main.obj
Debug\reals.obj
1>main.obj : error LNK2019: reference to the unresolved external symbol _asm_calculate_reals in function _main
1>somepath\Debug\Reals loop 3variants.exe : fatal error LNK1120: unresolved identifiers: 1
1>Building project "somepath\Reals loop 3variants.vcxproj" finished (targets Build) with errors.
Build failed.
尝试将此行添加到汇编代码中 - global _asm_calculate_reals
- 使其对链接器可见。 assembly 中的 "global" 关键字告诉汇编程序使标签从文件外部可见。
实际问题出在程序集源中的模型定义中。
.model flat, stdcall
- 出现错误时。
.model flat, c
- 改成这个,按预期工作。