我一直在尝试将程序从外部文件导出到主汇编程序中,但它不起作用。
以下是来自外部文件的测试代码:
; Export procedure Summa
format PE GUI 4.0
include 'win32a.inc'
section '.code' code readable executable
proc Summa
Public Summa
ret 2
endp在主文件中,我尝试附加Summa:
format PE GUI 4.0
include 'win32a.inc'
section '.data' data readable writeable
extrn Summa as Summa : proc 编译主文件时,我在带有extrn关键字的行中得到非法指令错误。
我试着在网上搜索,但我没有幸运地发现我应该如何在FASM中附加外部过程……
谢谢!
发布于 2011-07-24 02:18:31
我看到您有两个GUI可执行文件,那么“将过程从外部文件导出到主汇编程序”是什么意思?
是否要创建两个对象文件(.obj),然后将它们链接在一起?
然后在这两个文件中使用format MS COFF,添加适当的extrn和public指令,并使用一些链接器(例如link.exe)来构建.exe文件。
另外,请阅读fasm.pdf的第2.4.3节“通用对象文件格式”。
发布于 2020-01-20 13:50:33
使用PE,我相信你可以像这样从DLL导入:
library kernel,'KERNEL32.DLL'
import kernel,\
ExitProcess,'ExitProcess'如果您使用MS COFF,则链接样式将根据您的bitness 32或64而有所不同:
32位:
format MS COFF
section '.data' data readable writeable
extrn '__imp__Summa@0' as Summa:dword 64位:
format MS64 COFF
section '.data' data readable writeable
extrn '__imp_Summa' as Summa:qword一个很好的例子展示了32位的链接:https://flatassembler.net/examples/msvc.zip
还可以将extrn与ELF64一起使用,例如:https://2ton.com.au/rants_and_musings/gcc_integration.html
https://stackoverflow.com/questions/5612684
复制相似问题