如何使用 NASM 创建 .dll 文件?
是否可以使用 NASM 汇编器将汇编代码汇编成 .dll 文件? 我需要这个,因为我想将包含汇编代码的 .dll 文件和包含 C++ 代码的 .dll 文件链接在一起,并使用 JNI(Java 本机接口)加载该 .dll,它将调用 C++ 函数,这些函数只是程序集的包装器功能。 编译 C++ 和将代码汇编到两个单独的 .dll 模块中,从“C++ .dll 代码”调用“汇编 .dll 代码”也是一种可能性。
此致, 本杰明.
Is is possible to assemble Assembly code into .dll files with NASM assembler?
I need this because I want to link a .dll file containing Assembly code and a .dll file containing C++ code together, and load that .dll with JNI (Java Native Interface) that will call the C++ functions which are just wrappers for the Assembly functions.
Compiling the C++ & Assembly code into two separate .dll modules, calling the "Assembly .dll code" from the "C++ .dll code" is also a possibility.
Best regards,
Benjamin.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 nasm 创建一个 dll 并使用 alink 作为链接器。
在源代码中,对 dll 中的每个函数使用以下行:
global myfunc
export myfunc
您需要提供一个在初始化时调用的 _dllmain 函数。
只需在 eax 和 retn 12 中返回 1,因为您需要清理此处未使用的 3 个参数。
使用 -fobj (omf) 进行组装,然后与添加到 pe 和 GUI 选项的 -dll 进行链接
you can create a dll with nasm and use alink as your linker.
In your source use the following lines for every function in your dll:
global myfunc
export myfunc
You need to provide a _dllmain function that gets called upon initialisation.
Just return 1 in eax and retn 12 because you need to cleanup 3 args which aren't used here.
Assemble with -fobj (omf) then link with -dll added to the pe and GUI options
NASM 只是创建一个对象 (.o/.obj) 文件,对吧?为什么不通过在链接器命令行或项目属性上将其指定为附加输入来将其链接到 C++ DLL 中?
NASM just creates an object (.o/.obj) file, right? Why not link that into your C++ DLL by specifying it as an additional input on either the linker command line or the project properties?