2013-04-04 93 views
2

我想提出一個關於MinGW 4.7.2的問題 我第一次遇到由libstdC++ - 6.dll導致的致命問題,當我在OpenCV中冒險時。幸運的是,我在這裏遇到了一個解決方法 - >http://answers.opencv.org/question/3740/opencv-243-mingw-cannot-run-program/。它看起來很棒,一段時間。libstdC++ - 6.dll問題

現在我試圖實現複雜的數字。我嘗試下面的代碼

#include <iostream> 
#include <complex.h> 
using namespace std; 

int main(int argc, char* argv[]) 
{ 
    float _Complex d = 2.0f + 2.0f*I; 
    cout << "Testing Complex\t" << d; 
    return 0; 
} 

它應該運行,一切手段。鏈接時我沒有遇到任何錯誤或警告。我在Windows中使用CodeBlocks作爲我的首選IDE。但是,我又一次陷入困境。這裏是APPCRASH報告

Problem signature: 
    Problem Event Name: APPCRASH 
    Application Name: complex.exe 
    Application Version: 0.0.0.0 
    Application Timestamp: 515d61f7 
    Fault Module Name: libstdc++-6.dll 
    Fault Module Version: 0.0.0.0 
    Fault Module Timestamp: 4ed82a4d 
    Exception Code: c0000005 
    Exception Offset: 000462bc 
    OS Version: 6.1.7600.2.0.0.256.1 
    Locale ID: 1033 
    Additional Information 1: 0a9e 
    Additional Information 2: 0a9e372d3b4ad19135b953a78882e789 
    Additional Information 3: 0a9e 
    Additional Information 4: 0a9e372d3b4ad19135b953a78882e789 

然而令人驚訝的是How to work with complex numbers in C?提供了一個完美的工作的C代碼!

#include <stdio.h>  /* Standard Library of Input and Output */ 
#include <complex.h> /* Standart Library of Complex Numbers */ 

int main() 
{ 
    double complex z1 = 1.0 + 3.0 * I; 
    double complex z2 = 1.0 - 4.0 * I; 

    printf("Working with complex numbers:\n"); 
    printf("Starting values: Z1 = %.2f + %.2fi\tZ2 = %.2f + %.2fi\n",creal(z1),cimag(z1),creal(z2),cimag(z2)); 
    double complex sum = z1 + z2; 
    printf("The sum: Z1 + Z2 = %.2f %+.2fi\n", creal(sum), cimag(sum)); 
    return 0; 
} 

正如您所看到的,再次出現故障的libstdC++ - 6.dll會發揮作用。任何人都可以提出任何解決方法這次,希望不降級到之前版本的MinGW,因爲我將不得不重建我的所有庫。

任何幫助將不勝感激!

+0

Wellcome to SO。這可能不是您問題的正確站點。有了這樣的東西,你應該向你的平臺提供商提交一個錯誤報告。而且,BTW,C99和C++通常不兼容,特別是複雜數字似乎在兩者之間有不同的管理方式。 – 2013-04-04 11:55:53

+0

嘗試使用Cygwin。 – devnull 2013-04-04 12:00:57

+0

@JensGustedt:這個潛在的問題不是依賴於平臺,這個問題對於SO來說是有益的。 – rubenvb 2013-04-04 12:52:12

回答

1

像延斯說,我不認爲complex.h頭文件與C++兼容。在C++中,您應該使用complex標題,如下所示:

#include <iostream> 
#include <complex> 

int main() 
{ 
    std::complex<double> c1(1.0,1.0), c2 ; 

    c2 = pow(c1,2.0); 

    std::cout << c1 << " " << c2 << std::endl; 
} 
+0

作品,謝謝! :) – 2013-04-04 14:25:46