4

OS X 10.7 (Lion)、XCode 4.6.3、libstdc++ を C++ 標準ライブラリとして使用しています。

メインプロジェクトに次のコードがあります。

共有.cpp:

extern "C" int sharedFun()
{
    return 5;
}

そして、これは私のサイドプロジェクトで、メインのものを動的にロードする必要があります:

ローダー.cpp:

#include <dlfcn.h>

int main(int argc, const char * argv[])
{
    void* mainApp = dlopen("mainApp.dylib", RTLD_LAZY);

    char* error;
    dlsym(mainApp, "sharedFun");

    if ((error = dlerror()) != nullptr)
    {
         ....
    }
}

nm 出力:

nm -gU mainApp.dylib | grep sharedFun
002a3a10 - 01 0000   FUN _sharedFun
002a3a10 T _sharedFun

dlopen はライブラリを問題なくロードしますが、dlsym は「symbol not found」を返します。何か案は?

ありがとう。

4

0 に答える 0