基本的に、Visual Studio で作成した DLL があります (C としてコンパイルされています!)。
#ifdef __cplusplus
extern "C" {
#endif
extern __declspec(dllexport) int my_dll_test();
#ifdef __cplusplus
}
#endif
そして、ヘッダーを含めた後のソースファイルは、次のように簡単に述べています。
int my_dll_test()
{
return 0;
}
次に、Mingw でコンパイルされた C++ プログラムから呼び出してみます。それまたは他の関数を呼び出すとすぐに、プログラム全体が警告なしでセグメンテーション違反になります。これは非常に奇妙なことのように思えますが、その理由については長い話です。しかし、このような単純な DLL が呼び出されるとクラッシュする理由がわかりません。