私はCode::Blocksを使用してUbuntuで共有ライブラリをコンパイルしています。次のコマンドを使用して単純なmain.cファイルを作成すると、次のようになります。
void* CreateInterface()
{
int* x = (int*)malloc( sizeof( int ) );
*x = 1337;
return x;
}
これは正常に機能し、別のアプリケーションでdlsymを使用した関数CreateInterfaceを見つけることができます。ただし、C++で記述されたクラスのインスタンスを作成する関数が必要です。私は次のことを試しました:
#include "IRender.h"
extern "C"
{
void* CreateInterface()
{
return new Flow::Render::IRender();
}
}
これは正常にコンパイルされましたが、他のアプリケーションがCreateInterfaceを見つけることができません。これにどう対処すればいいですか?