2011-02-06 4 views
1

간단한 프로그램을 실행하려고하는데 다음 컴파일러 오류가 발생합니다. $./lab2 /디렉토리 here/lab2.exe : 공유 라이브러리를로드하는 동안 오류가 발생했습니다 : msys-1.0. DLL : 공유 객체 파일을 열 수 없습니다 : 그런 파일이나 디렉토리 여기컴파일러 오류 C++ msys-1.0.dll windows

을 내 메이크 코드 :이 실험실의 부품 B를 수행하려고


# CS240 Lab2 Makefile 

all: 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; 
} 

: http://cs.binghamton.edu/~sgreene/cs240-2010f/labs/lab2.html 그렇다면 실행중인 exe 오류에 대해 조언을 해줄 수는 없지만 B 부분도 제대로 작성하는지 알려 주시면 알려드립니다. 감사.

+0

btw. 어떻게하면 모든 코드가 스택 오버 플로우 표준에 들어 있으므로 형식을 읽을 수 있습니까? 코드 태그를 사용하여 코드를 붙여 넣을 때 코드가 다른 글꼴 크기로 표시되기 때문에 읽기가 어렵습니다. – user593301

+1

@ user593301 : 1 단계 : 코드 붙여 넣기 2 단계 : 모든 코드를 선택하십시오. 3 단계 : 편집기에서 "코드"아이콘을 클릭하십시오 (괄호 쌍처럼 보입니다). 또는 즐겨 사용하는 텍스트 편집기에서 4 개의 공백으로 코드 스 니펫을 들여 씁니다. –

+0

솔직히 말해서이 컴파일 결과가 놀랍습니다. TenStrings의 정의가 재귀적인 것으로 보이고 허용되지 않는다고 생각합니다. –

답변

0

실제로 컴파일러 오류가 아닙니다. 프로그램이 실행될 때 OS에서 오류가 발생합니다. 즉, 연결된 모든 라이브러리, 즉 mingw 런타임을 찾을 수 없다는 메시지입니다.

Mingw는 이러한 dll을 system32에 설치하지 않습니다. 오류가 발생한 DLL이 PATH에 있는지 확인하여 문제를 해결할 수 있습니다. 한 가지 좋은 장소는 exe가 들어있는 디렉토리에 복사하는 것입니다 (당연히 이동하지 마십시오).

0

작성된 코드는 컴파일되지 않습니다. 문제는 TenStrings 클래스에 배열 TenStrings 객체가 있다는 것입니다. 각 TenString은 컴파일러가 10 개의 TenStrings 개체에 대한 저장소를 제공해야하므로 컴파일 할 수 없습니다.

"TenStrings str [10]"을 "std :: string str [10]"으로 바꾸고 어떻게 작동되는지보십시오.

편집 : 문자에 대한 포인터를 사용해야하는 경우 "const char * str [10]"을 시도하십시오.

+0

실제로, user593301이 작업하고있는 숙제는 std :: string을 사용할 수 없습니다. 배열은 char 포인터의 배열이어야합니다. (그래, 나도 알아 ...) –

+0

어쨌든. 실험실의 부분 c에서 "클래스 사용자가 정규 할당을 사용하여 10 개의 문자열을 설정할 수 있도록 허용 하시겠습니까?"라는 의미는 무엇입니까? 사용자가 문자열을 입력한다는 의미입니까? 또는 코드의 클래스가 그것을 결정합니까? 많은 부분에서 혼란스러워한다. – user593301