Java MSVC++仅编译/禁用链接器

Java MSVC++仅编译/禁用链接器,java,c++,assembly,java-native-interface,Java,C++,Assembly,Java Native Interface,我需要编译一些C++代码,这些代码将用JNI从Java调用,这些C++函数必须调用NASM组装的汇编函数,因此JNI加载的.DLL中的C++函数只是java汇编函数的包装器。p> 但是,在代码被编译成一个可以链接到NASM生成的.obj文件的.dll之前,我无法解析对汇编函数的未定义的外部引用。那么,如何禁用链接器,这样当我构建C++模块时,就不会有什么抱怨了? 链接到NASM生成的Objo文件,打开C++项目的属性,选择配置属性>链接器>输入,然后将您的Objo文件添加到分号分隔的附加依赖列表

我需要编译一些C++代码,这些代码将用JNI从Java调用,这些C++函数必须调用NASM组装的汇编函数,因此JNI加载的.DLL中的C++函数只是java汇编函数的包装器。p>

但是,在代码被编译成一个可以链接到NASM生成的.obj文件的.dll之前,我无法解析对汇编函数的未定义的外部引用。那么,如何禁用链接器,这样当我构建C++模块时,就不会有什么抱怨了?

链接到NASM生成的Objo文件,打开C++项目的属性,选择配置属性>链接器>输入,然后将您的Objo文件添加到分号分隔的附加依赖列表中。< /P> < P>链接到NASM生成的Objo文件,打开C++项目的属性,选择“配置属性>链接器>输入”,然后将您的Objo文件添加到分号分隔的附加依赖列表中。

您需要构建静态/动态库或它所调用的任何内容。您使用的是哪个C++编译器,以及哪个版本?你是从IDE还是从命令行建立代码?真正的问题是你不能把你的NASM库和C++代码连接起来,对吗?安德烈,没错。我不能链接NASM和C++代码。我使用微软Visual C++ 2010,我正在从IDE中构建C++代码。Dahse Frederic的答案是正确的。在将来,请更具体地提出问题,因为你给出了许多不必要的细节,使问题变得模糊。你需要构建静态/动态库或它所调用的任何东西。你使用的是哪种C++编译器,以及哪个版本?你是从IDE还是从命令行建立代码?真正的问题是你不能把你的NASM库和C++代码连接起来,对吗?安德烈,没错。我不能链接NASM和C++代码。我使用微软Visual C++ 2010,我正在从IDE中构建C++代码。Dahse Frederic的答案是正确的。将来,请更具体地提问,因为您提供了许多不必要的细节,这使问题变得模糊。它声称我的func.obj文件已损坏,您如何使用NASM生成.obj文件?@Benjamin,Visual Studio 2010链接器只支持其自己的COFF对象文件格式变体。显然,您需要将-f win32选项传递给NASM,而不是-f coff,以便获得该格式的对象文件。啊,非常感谢:。但是我仍然在链接时得到未解决的外部符号错误。这是输出:func.obj:错误LNK2001:未解析的外部符号_sum1>崩溃。obj:错误LNK2019:未解析的外部符号int u cdecl sumint,int?sum@@YAHHH@Z函数_Java_崩溃中引用_sum@16@本杰明,这看起来像是呼叫约定不匹配。asm文件中使用的.model指令是什么?大多数时候,你应该在C++侧去取“y-sdDelphi”而不是“y-cDECL”。NASM没有.model指令。这是func.asm:_sum:push ebp mov ebp,esp mov eax,[ebp+8]mov ecx,[ebp+12]add eax,ecx pop ebp retIt声称我的func.obj文件已损坏,如何使用NASM生成.obj文件?@Benjamin,Visual Studio 2010链接器仅支持自己的COFF对象文件格式变体。显然,您需要将-f win32选项传递给NASM,而不是-f coff,以便获得该格式的对象文件。啊,非常感谢:。但是我仍然在链接时得到未解决的外部符号错误。这是输出:func.obj:错误LNK2001:未解析的外部符号_sum1>崩溃。obj:错误LNK2019:未解析的外部符号int u cdecl sumint,int?sum@@YAHHH@Z函数_Java_崩溃中引用_sum@16@本杰明,这看起来像是呼叫约定不匹配。asm文件中使用的.model指令是什么?大多数时候,你应该在C++侧去取“y-sdDelphi”而不是“y-cDECL”。NASM没有.model指令。这是函数asm:_sum:push ebp mov ebp,esp mov eax,[ebp+8]mov ecx,[ebp+12]add eax,ecx pop ebp ret