我正在使用Java本机接口(JNI)从c ++ DLL调用函数。在我实例化BSSSystemUsageDataTable * x = new BSSSystemUsageDataTable()的代码行上编译时,将未定义引用的错误归结为此错误。我已经包含了所有必需的头文件和lib文件/路径。我不太确定他们要求什么,因为当我使用x - >时,BSSSystemUsageDataTable.h中的所有函数名都显示在netbeans下。非常感谢任何帮助。 :)谢谢你们。
#include <jni.h>
#include "PocWrapperNative.h"
#include "BSSSystemUsageDataTable.h"
#include "inc/bssdevparam.h" /* Header of requried DLL */
using namespace BSSParameter;
JNIEXPORT jboolean JNICALL
Java_PocWrapper_decoding(JNIEnv *env, jobject obj, jstring s){
const char* str;
str = env -> GetStringUTFChars(s, 0);
printf("From C++ %s", str);
BSSSystemUsageDataTable * x = new BSSSystemUsageDataTable(); //**error code line**
x ->decode(str, false);
env->ReleaseStringUTFChars(s, str);
return false;
}
错误输出:
build/Debug/MinGW_1-Windows/_ext/1106720024/PocCppNative.o: In function `Java_PocWrapper_decoding@12':
c:/Program Files/Java/jdk1.6.0_23/bin/PocCppNative/PocCppNative.cpp:49: undefined reference to `_imp___ZN12BSSParameter24CBSSSystemUsageDataTableC1Ev'
collect2: ld returned 1 exit status
答案 0 :(得分:0)
编译器找不到BSSSystemUsageDataTable
的定义。虽然你已经包含了一个似乎定义它的头文件(可能在相应的.cpp文件中),但我怀疑它是在你忘记在代码中提到的命名空间中定义的。如果我的怀疑是正确的,请查看它。
您可能还没有在构建系统中包含实现文件。或者如果有任何.lib
具有实现,那么可能它没有添加到构建系统中!