MinGW コンパイラで DLL (MSVC を使用してコンパイルされたもの) を使用しようとしています。dll とバイナリの両方が、対応するコンパイラ (MSVC DLL の場合は MSVC、MinGW バイナリの場合は MinGW) でコンパイルされた opencv dll を使用します。ただし、opencv バージョンは同じ 2.42 です。
DLL を (extern C を使用して) 正常にロードできますが、DLL から SetRect 関数を呼び出すと、次のコンソール出力が表示されます。
Set search rect(qt): 162, 119, 50, 50
(Internal error: pc 0x112 in read in psymtab, but not in symtab.)
(Internal error: pc 0x112 in read in psymtab, but not in symtab.)
(Internal error: pc 0x112 in read in psymtab, but not in symtab.)
(Internal error: pc 0x112 in read in psymtab, but not in symtab.)
Set search rect(dll): 2282800, 2282908, 2282840, 1874777202
(Internal error: pc 0x112 in read in psymtab, but not in symtab.)
(Internal error: pc 0x112 in read in psymtab, but not in symtab.)
(Internal error: pc 0x112 in read in psymtab, but not in symtab.)
(Internal error: pc 0x112 in read in psymtab, but not in symtab.)
数値が異なるのはなぜですか、内部エラーは何ですか、どうすれば解決できますか?
一部のコードでは、Rect クラスが Opencv から派生していることに注意してください。
MinGW バイナリ:
std::cout << "Rect(qt): " << rect.x << ", " << rect.y << ", " << rect.width << ", " << rect.height << "\n" << std::flush;
SetRect(rect);
MSVC DLL:
void SetRect(Rect rect)
{
std::cout << ""Rect(dll): " << rect.x << ", " << rect.y << ", " << rect.width << ", " << rect.height << "\n" << std::flush;
}
ありがとう。