Sim*_*sch 3 assembly masm visual-c++
给出:带有入口点的prog.c prog
我通常会
cl.exe /MD /LD /Fe"prog.dll" /Fo"prog" "prog.c" /link ext.lib
Run Code Online (Sandbox Code Playgroud)
要么
cl.exe /MD /Fo"prog.obj"
cl.exe /MD /LD /Fe"prog.dll" "prog.obj" /link ext.lib
Run Code Online (Sandbox Code Playgroud)
在两种情况下,生成的prog.dll都可以正常工作。
现在,我执行以下操作来获取一个asm文件而不是obj文件:
cl.exe /c /MD /Fa"prog"
Run Code Online (Sandbox Code Playgroud)
到目前为止,这个“工作”也是如此。但我不知道如何制作此文件的dll。
尝试过:
ml.exe /c /Cx /coff prog.asm
cl.exe /MD /LD /Fe"prog.dll" "prog.obj" /link ext.lib
Run Code Online (Sandbox Code Playgroud)
结果:没有入口点的prog.dll prog
再次尝试:
ml.exe /c /Cx /coff prog.asm
cl.exe /MD /LD /Fe"prog.dll" "prog.obj" /link /entry:prog ext.lib
Run Code Online (Sandbox Code Playgroud)
结果:编译器警告错误的入口点_prog不能用12个字节的参数进行stdcall以及有关未解析符号_memcpy的编译器错误。
问题:有什么方法可以将由/ Fa生成的cl.exe生成的asm文件编译为dll(最好是通过cl.exe,如果不能使用ml.exe编译)?
有什么方法可以将cl.exe生成的asm文件编译
/Fa为dll(最好是通过cl.exe,如果无法使用ml.exe 进行编译)?
没有:
对我来说还不清楚,为什么您一开始就想这样做。如果您的源代码是C或C ++,并且可以通过MSVC进行编译和链接,那么引入将其与汇编语言之间进行转换的附加中间步骤的目的是什么?只需直接使用cl.exe制作DLL。
如果绝对必须这样做,则必须使用MSVC生成的ASM列表文件,并在通过MASM运行该文件之前对其进行手动清理。您可以通过关闭整个程序优化,关闭异常处理,关闭安全检查/饼干,并指示链接器的图像确实让这个清理任务更容易不包含安全SEH处理程序。请注意,其中一些可能会破坏或更改代码的行为!您还需要为EXTERN从运行时库调用的函数添加定义。
| 归档时间: |
|
| 查看次数: |
1900 次 |
| 最近记录: |