ソースを .o ファイルにコンパイルし、"ar rcs libMyLibrarylib.a *.o" を使用してライブラリを作成した後、メンバー変数とプライベート関数がストライプ化されたヘッダー ファイルを使用しているため、segfault が発生します。まったく同じヘッダーを使用すると、エラーは発生しません。マップ内のポインターを削除すると、セグメンテーション違反が発生します。
ライブラリの作成に使用されるヘッダー
#include <**Type**>
class A
{
public:
A();
~A(); //In the destructor I iterate through the map to free everything before
void function();
private:
void privateFunction();
std::map<**Type**, int*> myMap;
}
コンパイルされたライブラリで使用されるヘッダー
class A
{
public:
A();
~A();
void function();
}
正確なヘッダー ファイルを使用しない場合、スライシングまたは何かがありますか? ライブラリを使用している人からTypeの #include を隠したい。
ライブラリの単体テストがあります。セグメンテーション違反はしませんが、コンパイルに使用したものと同じヘッダー ファイルを使用します。