Netbeans C ++编译错误:对<function name =“”> </function>的未定义引用

时间:2011-02-15 01:41:47

标签: c++

我正在使用Java本机接口(JNI)从c ++ DLL调用函数。在我实例化BSSSystemUsageDataTable * x = new BSSSystemUsageDataTable()的代码行上编译时,将未定义引用的错误归结为此错误。我已经包含了所有必需的头文件和lib文件/路径。我不太确定他们要求什么,因为当我使用x - &gt;时,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

1 个答案:

答案 0 :(得分:0)

编译器找不到BSSSystemUsageDataTable的定义。虽然你已经包含了一个似乎定义它的头文件(可能在相应的.cpp文件中),但我怀疑它是在你忘记在代码中提到的命名空间中定义的。如果我的怀疑是正确的,请查看它。

您可能还没有在构建系统中包含实现文件。或者如果有任何.lib具有实现,那么可能它没有添加到构建系统中!