【发布时间】:2018-05-03 22:33:18
【问题描述】:
我有一个 Java 程序,它利用一些本机函数调用来加速视频编码。它需要一个 DLL,我将用 C 编写它(我现在只有一个测试版)。
当我使用cl /I "java-path/include" /"java-path/include/win32" -DL -ML Main.c -FeTest.dll 编译 DLL 时,它会编译,但我得到的是 32 位 DLL。在网上做了一些研究后,我发现我需要一个 64 位的 DLL。
经过更多研究,我发现 this post 是 C 的唯一一个(即使 C++ 也很难找到),但这仅在您通过 Visual Studio 2010 编写/构建时才有效。我使用 Elipse 作为Java,C 的 CLion,并通过“开发人员命令提示符”进行编译。所以这对我不起作用。如何重新编译为 64 位 DLL?
编辑:我正在使用 Visual Studio 2017 附带的 cl.exe
更新:我在 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\Hostx64\x64\cl.exe 下找到了 64 位 cl.exe,但是在运行它时,我收到一个错误,即库机器类型 (x86) 与目标类型 (x64) 冲突。如何更改库机器类型?
【问题讨论】:
-
@jdv 它忽略它,所以没有
-
@c0degreen 不重复,但相关:stackoverflow.com/questions/2548138/…
-
@jdv 我必须澄清一下,它是 Visual Studio 编译器 (cl.exe)。你知道我可以使用的替代方法吗?
-
请edit这个问题并清楚您使用的是什么工具链。
-
您使用的是开发人员命令提示符还是 x64 本机工具命令提示符?
标签: c dll compilation 64-bit x86-64