Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.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 构造.dll时未找到GCC选项_Java_C++_Eclipse_Gcc_Makefile - Fatal编程技术网

Java 构造.dll时未找到GCC选项

Java 构造.dll时未找到GCC选项,java,c++,eclipse,gcc,makefile,Java,C++,Eclipse,Gcc,Makefile,在遵循本教程()以在eclipse项目中使用JNI的同时,我正在尝试创建一个.dll。但是,我的makefile有一个问题,它可能与所有JNI内容无关 生成(全部生成)时,我得到了“未知选项:--addstdcall别名”。我正在使用Mac GCC编译器。这是我的控制台日志和make文件: 编辑:所以我删除了导致错误的选项,我的构建成功了。然而,仅仅删除一行我一无所知的代码,我就感到不安全。有人想告诉我删除此代码的含义吗 控制台输出: 18:05:33**构建项目HPA*测试的默认配置* 全部

在遵循本教程()以在eclipse项目中使用JNI的同时,我正在尝试创建一个.dll。但是,我的makefile有一个问题,它可能与所有JNI内容无关

生成(全部生成)时,我得到了“未知选项:--addstdcall别名”。我正在使用Mac GCC编译器。这是我的控制台日志和make文件:

编辑:所以我删除了导致错误的选项,我的构建成功了。然而,仅仅删除一行我一无所知的代码,我就感到不安全。有人想告诉我删除此代码的含义吗

控制台输出: 18:05:33**构建项目HPA*测试的默认配置* 全部 javah-classpath../bin hpa程序 gcc-Wl,--add stdcall别名-shared-o hpaprogram.dll hpaprogram.o ld:未知选项:-添加stdcall别名 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用) make:*[hpaprogram.dll]错误1

18:05:34 Build Finished (took 823ms)
生成文件:

# Define a variable for classpath
CLASS_PATH = ../bin

# Define a virtual path for .class in the bin directory
vpath %.class $(CLASS_PATH)

all : hpaprogram.dll

# $@ matches the target, $< matches the first dependancy
hpaprogram.dll : HPAProgram.o
    gcc -Wl,--add-stdcall-alias -shared -o $@ $<

# $@ matches the target, $< matches the first dependancy
HPAProgram.o : HPAProgram.c++ HPAProgram.h
    gcc -I /System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/ -c $< -o $@

# $* matches the target filename without the extension
HPAProgram.h : HPAProgram.class
    javah -classpath $(CLASS_PATH) $*

clean :
    rm HPAProgram.h HPAProgram.o hpaprogram.dll
#为类路径定义一个变量
类路径=../bin
#在bin目录中为.class定义虚拟路径
vpath%.class$(类路径)
全部:hpaprogram.dll
#$@匹配目标,$<匹配第一个依赖项
hpaprogram.dll:hpaprogram.o
gcc-Wl,--add stdcall别名-shared-o$@$<
#$@匹配目标,$<匹配第一个依赖项
HPAProgram程序.C++
gcc-I/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/-c$<-o$@
#$*匹配不带扩展名的目标文件名
HPAProgram.h:HPAProgram.class
javah-classpath$(类路径)$*
清洁:
rm HPAProgram.h HPAProgram.o HPAProgram.dll

我按照相同的教程进行练习,结果证明去掉“-Wl,--add stdcall alias”是可以的

顺便说一句,在Mac中,您必须使用“.dylib”而不是“.so”,否则您将收到错误提示“java.lang.unsatifiedlinkerror:no hello in java.library.path”