lib.cは含まれていますなぜ共有ライブラリをコンパイルした後に関数の名前が変わるのですか?
#include <stdio.h>
void testFunction()
{
printf("This is the testFunction from lib.so");
}
私は、このコマンドでファイルにコンパイル:私はtestFunctionが_Z12testFunctionvになったことがわかっlib.soにnmのrunned後
g++ -fPIC -shared lib.c -o lib.so
を。どうして?私はdlsymを使って関数をロードする場合、これは大きな問題だと思います。
C++コードではなくC++コードをコンパイルするのは、異なる役割を果たす 'g ++'で "動作"します。あなたのCコードは有効なC++コードでもあります。名前として 'testFunction'の代わりに' new'を使用した場合、ソースコードは 'new'がC++キーワードであるため、C++では有効ではありません(Cでは有効です)。 –