linuxのC++ライブラリから関数を呼び出したい。私はそのライブラリの共有オブジェクトを持っています。 ydmgライブラリからintを返すgetAge()メソッドを呼び出す必要があります。続きLinuxのC++ライブラリからC++関数を呼び出す
は、私が書いたコードです:私はコンパイル
testydmg.cpp
#include "ydmg/bd.h"
#include "yut/hash.h"
#include "dlfcn.h"
extern "C" int getAge();
class testydmg{
public:
testydmg::testydmg(const yutHash& user){
}
testydmg::testydmg(){
}
testydmg::~testydmg(){
}
int testydmg::getFunction(){
void *handle;
int (*voidfnc)();
handle = dlopen("ydmg.so",RTLD_LAZY);
if(handle == NULL){
printf("error in opening ydmg lib");
} else {
voidfnc = (int (*)())dlsym(handle, "getAge");
(*voidfnc)();
printf("class loaded");
}
ydmgBd obj;
obj.getAge();
printf("Inside getFunction()...");
dlclose(handle);
}
};
し、以下のようにコードをリンク:
gccの-fPIC -shared -l STDC++ -I/home/y/libexec64/jdk1.6.0/include -I/home/y/libexec64/jdk1.6.0/include/linux -I/home/y/include testydmg.cpp -o libTestYdmg.so libydmg.so
それから私は、新しい共有オブジェクトすなわちlibTestYdmg.so
nmの-C libTestYdmg.soで方法を確認してください| egrep getAge 上記のコマンドを実行しても何も得られません。
これは、ライブラリからgetAge()メソッドを取得しなかったことを意味しますか? 私が間違っている場所を修正してください。
私はそこにライブラリが表示されますか? getAgeは未解決/遅延シンボルのままです。 –