2013-04-22 62 views
3

我試圖運行我的opencv應用程序時遇到了該錯誤。我使用的是Windows7,CodeBlocks 12.11,opencv2.4.4和MinGW編譯器(CodeBlocks中的編譯器)。它編譯並創建可執行文件,但是當我嘗試運行時,它與程序入口點錯誤崩潰。 我已經將C:\ programs \ CodeBlocks \ Mingw \ bin添加到「PATH」變量中,並且我知道有libstdC++ - 6.dll。程序入口點__gxx_personality_v0無法位於動態鏈接庫libstdC++ - 6.dll

我不知道發生了什麼。

這是簡單的代碼:

include <iostream> 
include <opencv2/highgui/highgui.hpp> 

using namespace std; 
using namespace cv; 

int main() 
{ 
cout << "Hello world!" << endl; 
namedWindow("window"); 
Mat image=imread("mustang.jpg",CV_LOAD_IMAGE_COLOR); 
imshow("window",image); 
waitKey(0); 
return 0; 
} 

回答

0

libstdC++ - 6.dll包含運行時環境。它是基本例程的實現,例如堆管理器或異常處理。

這些基本例程幾乎用在每個程序中。因此,把它們複製到每個程序中都是浪費記憶。這就是爲什麼它們通常被打包到共享庫(DLL)中的原因。然後,程序可以在需要運行時的例程時請求DLL。

就你而言,libstdC++ - 6.dll包含錯誤版本的運行時。有兩種可能性:

  • 找到一個libstdC++ - 6.dll,其中包含正確版本的運行時並將其複製到可執行文件的目錄中。您可以通過運行nm libstdc++-6.dll | grep personality來確定DLL是否是正確的。如果__gxx_personality_v0顯示在列表中,那麼您可能擁有正確的DLL。
  • 將運行時環境的副本放入可執行文件中。您可以通過將-static-libgcc -static-libstdc++添加到鏈接器參數來完成此操作。
相關問題