libstdc ++ — 6.dll вопросы

Я хотел бы выдвинуть вопрос относительно MinGW 4.7.2
Сначала я столкнулся со смертельной проблемой, вызванной libstdc ++ — 6.dll, когда решился на OpenCV. К счастью, я наткнулся на обходной путь здесь -> http://answers.opencv.org/question/3740/opencv-243-mingw-cannot-run-program/. Некоторое время выглядело великолепно.

Сейчас я пытаюсь реализовать комплексные числа. Я пытаюсь следующий код

#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;
}

Это должно бежать, во что бы то ни стало. Я не сталкиваюсь с ошибками или предупреждениями при линковке. Я использую CodeBlocks в качестве моей предпочтительной IDE в Windows. Но, опять же, я в тупике. Вот отчет 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

Все же удивительно, Как работать с комплексными числами в 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, так как тогда мне придется перестраивать все мои библиотеки.

Любая помощь будет оценена!

2

Решение

Как сказал Дженс, я не думаю, что complex.h Заголовочный файл совместим с C ++. В C ++ вы должны использовать сложный заголовок вроде так:

#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;
}
1

Другие решения

Других решений пока нет …