首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FASM中的外部过程

FASM中的外部过程
EN

Stack Overflow用户
提问于 2011-04-10 23:15:25
回答 2查看 2K关注 0票数 2

我一直在尝试将程序从外部文件导出到主汇编程序中,但它不起作用。

以下是来自外部文件的测试代码:

代码语言:javascript
复制
; Export procedure Summa
format PE GUI 4.0

include 'win32a.inc'

section '.code' code readable executable

proc Summa
Public Summa
ret 2
endp

在主文件中,我尝试附加Summa:

代码语言:javascript
复制
format PE GUI 4.0

include 'win32a.inc'

section '.data' data readable writeable

extrn Summa as Summa : proc  

编译主文件时,我在带有extrn关键字的行中得到非法指令错误。

我试着在网上搜索,但我没有幸运地发现我应该如何在FASM中附加外部过程……

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2011-07-24 02:18:31

我看到您有两个GUI可执行文件,那么“将过程从外部文件导出到主汇编程序”是什么意思?

是否要创建两个对象文件(.obj),然后将它们链接在一起?

然后在这两个文件中使用format MS COFF,添加适当的extrnpublic指令,并使用一些链接器(例如link.exe)来构建.exe文件。

另外,请阅读fasm.pdf的第2.4.3节“通用对象文件格式”。

票数 2
EN

Stack Overflow用户

发布于 2020-01-20 13:50:33

使用PE,我相信你可以像这样从DLL导入:

代码语言:javascript
复制
library kernel,'KERNEL32.DLL'

import kernel,\
    ExitProcess,'ExitProcess'

如果您使用MS COFF,则链接样式将根据您的bitness 32或64而有所不同:

32位:

代码语言:javascript
复制
format MS COFF

section '.data' data readable writeable

extrn '__imp__Summa@0' as Summa:dword     

64位:

代码语言:javascript
复制
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

PE函数导入示例:https://flatassembler.net/examples/quetannon.zip

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5612684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档