ошибка компилятора c ++ msys-1.0.dll windows - PullRequest
1 голос
/ 06 февраля 2011

Я пытаюсь запустить простую программу, но получаю следующую ошибку компилятора: $. / Lab2 / directory here / lab2.exe: ошибка при загрузке общих библиотек: msys-1.0.dll: не удается открыть общий объектный файл: такого файла или каталога нет

вот мой make-файл и код:


# CS240 Lab2 Makefile 

все: lab2

lab2: main.o tenstrings.o g ++ main.o tenstrings.o -o lab2

main.o: main.cpp g ++ -Wall -c main.cpp -o main.o

tenstrings.o: tenstrings.cpp g ++ -Wall -c tenstrings.cpp -o tenstrings.o

tenstrings.h 

----------------------------------------------- ------------------------- * /

#ifndef TENSTRNGS
#define TENSTRNGS

class TenStrings
{
public: 
    // Default Constructor
    TenStrings(); 
    TenStrings str[10];
};

#endif

    tenstrings.cpp 
--------------------------*/
#include "TenStrings.h"

using namespace std;

//Default Constructor
TenStrings::TenStrings()
{
private:

    str[0] = "String 1";
    str[1] = "String 2";
    str[2] = "String 3";
    str[3] = "String 4";
    str[4] = "String 5";
    str[5] = "String 6";
    str[6] = "String 7";
    str[7] = "String 8";
    str[8] = "String 9";
    str[9] = "String 10";

    std::cout << str[2] << std::endl;
}
;

    main.cpp 
--------------------------*/
#include "TenStrings.h"
#include <iostream>

int main()
{
    TenStrings varTen;


    return 0; 
}

Я пытаюсь выполнить часть B этой лабораторной работы: http://cs.binghamton.edu/~sgreene/cs240-2010f/labs/lab2.html так что если вы можете не только дать мне совет по поводу ошибки exe, но и сказать, правильно ли я получаю часть B. Благодарю.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2011

Код, как написано, не компилируется.Проблема в том, что ваш класс TenStrings содержит массив объектов TenStrings.Поскольку каждая TenStrings требует, чтобы компилятор предоставил хранилище для десяти объектов TenStrings, он не может скомпилировать.

Попробуйте заменить «TenStrings str [10]» на «std :: string str [10]» и посмотрите, какэто работает.

Редактировать: Если вам нужно использовать указатели на символы, попробуйте "const char * str [10]".

0 голосов
/ 06 февраля 2011

На самом деле это не ошибка компилятора. При запуске программы вы получаете сообщение об ошибке, в котором говорится, что она не может найти все библиотеки, с которыми она связана, а именно среду выполнения mingw.

Mingw не устанавливает эти dll в system32, как некоторые другие. Вы можете решить проблему, убедившись, что dll, о которой вы получаете ошибку, находится в вашей переменной PATH. Хорошее место - это скопировать его (конечно, не перемещайте) в каталог, содержащий ваш exe-файл.

...