Visual Studio 2012:在 DLL 项目中使用 MASM x64
Visual Studio 2012: Using MASM x64 in DLL Project
好的,我有一个用 C++ 编写的控制台项目。我需要一个 GUI,我不想弄乱任何可用的 GUI 库,所以我转向 C#。
该应用程序执行很多底层操作,包括一些汇编代码,并且由于 x64 不支持内联汇编,所以我使用的是 MASM。所以我不能合理的把代码移植过来,所以我把C++ app做成了一个DLL工程。
当我启用 MASM 时,我选中 "Build Customizations" 中的 'masm' 框。之后,预期的项目属性 > 配置属性 > Microsoft 宏汇编程序菜单选项没有出现!
编译时,我得到 'unresolved external symbol X' 其中 X 是我写入 .asm 文件的标签。
我研究过从原始二进制文件导出函数,但看起来您需要构建整个导出 table...我宁愿不这样做。
那么,简而言之,如何将 ASM 编译成 64 位 Windows DLL?
也许有更好的方法可以做到这一点?
您可以将汇编代码编译成静态库,然后创建一个本机 C++ DLL,它将从汇编库中导出函数。
我相信这个问题,虽然我问得不是很好,但与以下问题重复:
How to enable Assembly Language support in Visual Studio 2013
不过,那里选择的答案并没有解决我的问题。 ilovecpp 的回答是诀窍:
Maybe this will useful:
Right-click on the file_name.asm (in Solution Explorer)
Properties -> Configuration Properties -> General -> Item Type
Choose Microsoft Macro Assembler
启用后,一切都编译得很好。你可以把MASM编译成DLL,只是多了一步。
好的,我有一个用 C++ 编写的控制台项目。我需要一个 GUI,我不想弄乱任何可用的 GUI 库,所以我转向 C#。
该应用程序执行很多底层操作,包括一些汇编代码,并且由于 x64 不支持内联汇编,所以我使用的是 MASM。所以我不能合理的把代码移植过来,所以我把C++ app做成了一个DLL工程。
当我启用 MASM 时,我选中 "Build Customizations" 中的 'masm' 框。之后,预期的项目属性 > 配置属性 > Microsoft 宏汇编程序菜单选项没有出现!
编译时,我得到 'unresolved external symbol X' 其中 X 是我写入 .asm 文件的标签。
我研究过从原始二进制文件导出函数,但看起来您需要构建整个导出 table...我宁愿不这样做。
那么,简而言之,如何将 ASM 编译成 64 位 Windows DLL? 也许有更好的方法可以做到这一点?
您可以将汇编代码编译成静态库,然后创建一个本机 C++ DLL,它将从汇编库中导出函数。
我相信这个问题,虽然我问得不是很好,但与以下问题重复:
How to enable Assembly Language support in Visual Studio 2013
不过,那里选择的答案并没有解决我的问题。 ilovecpp 的回答是诀窍:
Maybe this will useful:
Right-click on the file_name.asm (in Solution Explorer) Properties -> Configuration Properties -> General -> Item Type Choose Microsoft Macro Assembler
启用后,一切都编译得很好。你可以把MASM编译成DLL,只是多了一步。