gpt4 book ai didi

java - SWIG CYGWIN DLL 链接

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:52 24 4
gpt4 key购买 nike

我正在尝试遵循位于 here 的 SWIG Java 示例。本例使用cygwin进行编译。我想向编译器传递一个已编译的 dll、test.dll,而不是 C 源文件。 SWIG.org 示例使用 C 源代码。我尝试将 test.dll(编译的 C 源代码)和 example.dll 传递给第三个命令,但出现错误“test.dll:没有这样的文件或目录”。 SWIG.org 示例的第三个命令基于 example.c 创建 example.dll。如何创建 example.dll 以便它使用 test.dll 而不是 example.c?

有没有办法在此示例的上下文中实现此目的?

我在没有 C 源代码、仅 dll 的情况下的尝试:

$ swig -java example.i

$ gcc example_wrap.c -I/c/jdk1.6.0_30/include -I/c/jdk1.6.0_30/include/win32

$ gcc -shared example_wrap.o -mno-cygwin -Wl,--add-stdcall-alias -o test.dll example.dll

SWIG.org 示例代码:

$ swig -java example.i
$ gcc **-c example.c** example_wrap.c -I/c/jdk1.3.1/include -I/c/jdk1.3.1/include/win32
$ gcc -shared example.o example_wrap.o -mno-cygwin -Wl,--add-stdcall-alias -o example.dll

最佳答案

您需要将 test.dll 传递给最后一个命令,该命令链接您的程序,而不是第二个命令,后者仅编译 example_wrap.c 源文件。 (-c 选项告诉 gcc 仅进行编译。)

请注意,链接线上对象和 DLL 的顺序很重要。 DLL 应该位于使用它们的任何内容之后。

关于java - SWIG CYGWIN DLL 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8772477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com