문제

내가하고 싶은 일을 곧 설명하려고 노력할 것입니다.

다른 방법을 사용하는 정적 라이브러리를 사용하는 프로젝트. mylib2에서 mylib1 링크에서 myProject 링크라는 프로젝트를 생성합니다. 다음은 컴파일 순서입니다.

  • mylib2
  • mylib1 (mylib2에 링크)
  • myproject (mylib1에 연결)

나는 Visual Studio 2008을 사용하고 있으며 포함에 문제가 있습니다. 링크 할 때는 "추가 포함 디렉토리"(프로젝트 속성 C/C ++ 노드)를 사용합니다. 이것은 myproject와 mylib1 사이에서 작동하지만 mylib1과 mylib2는 작동하지 않습니다. 예를 들어 : 나는 mylib2에 foo.cpp라는 파일을 가지고 있습니다. #include "foo.cpp"를 사용하면 Visual Studio가 foo.cpp가 알 수 없다고 말합니다 (파일 또는 폴더 누락).

내가 준 잘못된 경로가 아닌지 확인하기 위해 다음과 같은 많은 Attemps를 수행했습니다. 사본-페이스트 명령 줄에 표시된 경로 (라이브러리를 컴파일하는 데 사용) Win Explorer로 표시됩니다. 두 번째 라이브러리의 소스 코드를 잘 볼 수 있습니다. 나는 프로젝트를 여러 번 리메이크하고 매번 다른 이름을 사용했습니다 (이것에주의를 기울 이도록 강요). 모든 것이 잘 정의되어있는 것처럼 보입니다 (그러나 "포함").

실제로 작동하는 유일한 방법 : #include 사용 "C : foo.cpp" 포함하여 ... 휴대성에 아주 좋습니다!

다음은 직접 테스트하고 무엇이 잘못되었는지 알려주는 솔루션의 zip입니다. myproject.rar

시간을내어 도와 주셔서 감사합니다! 루시 베라 드

도움이 되었습니까?

해결책

먼저 *.cpp 파일을 포함하지 마십시오.

둘째, 외부 기능의 선언 선언을 사용하십시오.

void appellib2(void);

void appellib1(void)
{
    appellib2();
}

셋째, 솔루션 탐색기에서 각 프로젝트를 마우스 오른쪽 단추로 클릭하고 "프로젝트 종속성 ..."및 적절한 종속성을 설정하십시오 : myProject-> mylib1-> mylib2.

마침내 MyProject의 속성에서 추가 종속성 MyLib1.lib를 설정하십시오.

이제 오류없이 프로젝트를 구축하고 실행할 수 있습니다.

업데이트

링크 문제를 해결하기 위해 *.cpp *.h로 이름을 바꾸지 마십시오. *.h 파일에 정의가있는 경우 두 번 이상 포함 할 수 없습니다.

여기 프로젝트가 있습니다 yourproject.rar.

다른 팁

.cpp를 .h로 변경했습니다. 나는 CPP 파일을 포함하지 않아야한다는 것을 알고 있지만 테스트 목적을위한 것이 었습니다.

각 기능의 프로토 타입을 추가했지만 더 잘 작동하지 않습니다 (MyLib2.cpp 파일은 포함되지 않으며 프로토 타입이 더 좋지만이 테스트에서는 유용하지 않습니다).

프로젝트 종속성을 설정했습니다. 여전히 실패합니다.

MyProject에 추가 종속성을 설정했습니다.

Teres 수정으로 여전히 오류 MyLib2.h : 그러한 파일이나 디렉토리가 포함되지 않습니다.

다음은 새로운 아카이브입니다. myproject.rar

당신이 그것을 작동시키기 위해 도달했다면, 당신은 저를 작동 솔루션의 아카이브로 만들 수 있습니까?

고마워요, 루시 베라 드.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top