Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用MinGW为windows构建linux库_Java_C++_Linux_Java Native Interface_Mingw - Fatal编程技术网

Java 使用MinGW为windows构建linux库

Java 使用MinGW为windows构建linux库,java,c++,linux,java-native-interface,mingw,Java,C++,Linux,Java Native Interface,Mingw,linux上有一个包含make脚本的lib源代码。 . 我需要为windows构建它。它应该是两个dll。主dll和第二个dll是jni包装器,用于从java调用本机函数。 我使用以下命令在linux下构建了它: autoreconf --install ./configure --enable-java make 它建造成功,运行良好。但现在我需要为windows制作它。 我已经用GUI安装程序安装了MinGW,并将MinGW\bin添加到我的路径中。 我运行相同的命令,但make中有错误:

linux上有一个包含make脚本的lib源代码。 . 我需要为windows构建它。它应该是两个dll。主dll和第二个dll是jni包装器,用于从java调用本机函数。 我使用以下命令在linux下构建了它:

autoreconf --install
./configure --enable-java
make
它建造成功,运行良好。但现在我需要为windows制作它。 我已经用GUI安装程序安装了MinGW,并将MinGW\bin添加到我的路径中。 我运行相同的命令,但make中有错误:

mv -f .deps/libpoker_eval_la-deck_std.Tpo .deps/libpoker_eval_la-deck_std.Plo
/bin/sh ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../inclu
de -I../include  -Wall -Wpointer-arith -Wstrict-prototypes  -g -O2 -MT libpoker_
eval_la-enumerate.lo -MD -MP -MF .deps/libpoker_eval_la-enumerate.Tpo -c -o libp
oker_eval_la-enumerate.lo `test -f 'enumerate.c' || echo './'`enumerate.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../include -I../include -Wall -Wpoi
nter-arith -Wstrict-prototypes -g -O2 -MT libpoker_eval_la-enumerate.lo -MD -MP
-MF .deps/libpoker_eval_la-enumerate.Tpo -c enumerate.c  -DDLL_EXPORT -DPIC -o .
libs/libpoker_eval_la-enumerate.o
enumerate.c: In function 'enumExhaustive':
enumerate.c:415:5: error: 'intptr_t' undeclared (first use in this function)
enumerate.c:415:5: note: each undeclared identifier is reported only once for ea
ch function it appears in
make[1]: *** [libpoker_eval_la-enumerate.lo] Error 1
make[1]: Leaving directory `/drive/eval/lib'
make: *** [all-recursive] Error 1
这里有完整的控制台日志

你能帮我解决这个问题吗? 谢谢

您需要添加:

#include <stdint.h>
#包括

在enumerate.c文件中。这将使您克服此错误,但很可能您必须将这一行添加到多个文件。

您使用的是哪个mingw-g++版本?这与Java有何关系?它是一个本机库,带有Java-Java本机接口的dll包装器。我可以用cygwin for windows构建它。但它不起作用。导致jvm崩溃。如何找到mingw-g++vesion?$GCC——版本GCC.EXE(GCC)4.5.2版权(C)2010免费软件基金会,这是免费软件;有关复制条件,请参见源。没有担保;甚至不是为了适销性或适合某一特定目的。也许它可以解决这个问题。但我在我的Ubuntu上构建了它,没有任何改动,而且它在那里工作正常。我还用cygwin for windows构建了它。它的构建也没有错误。但是当我在windows上从java使用JVM时,JVM总是崩溃。有些人说cygwin有问题,他们在cygwin上的lib也有同样的问题。但是他们用mingw建造了它,而且它工作得很好!
C++
标准没有指定哪些标题必须/不得包含在其他标准标题中。因此,在Ubuntu上,最有可能的是其他一些标准头文件包含了stdint.h,而在windows上则没有。因此,只需手动包含它。@NullPointer很有可能配置脚本无法正确确定从您使用的mingw环境执行时需要包含的时间/位置。谢谢您的帮助!我补充说,包括在内,一切都很好!