2009-05-06 2 views
2

Visual Studio 2003 프로젝트 내에서 Visual Studio 2008로 컴파일 된 DLL과 라이브러리는 어떻게 사용할 수 있습니까?VS2003 솔루션의 VS2008 빌드 라이브러리를 사용할 수 있습니까?

감사합니다, 댄

+0

분명히 말씀 드리고 싶습니다. .NET 종속성이없는 C++을 사용하고 있습니다. – DanJ

+0

매개 변수로 전달되는 C++ 클래스에 대한 포인터가 있습니다. 이를 제거하고 기본 유형 만 사용하는 것이 좋습니다. const std :: string &와 같은 stl 유형은 어떻습니까? – DanJ

답변

1

확실히 DLL을 사용할 수 있습니다. VS2003 및 VS2008에서 동일한 타사 DLL을 사용했습니다. 일을 훨씬 쉽게하기 위해서는 일반 오래된 데이터 형식을 DLL 함수간에 전달해야합니다. 구조체 또는 클래스는 훨씬 더 어렵지만 대부분의 경우 VS2003과 VS2008 사이에서도 가능해야합니다.

this questions에서 내가 제공 할 수있는 것보다 훨씬 자세한 정보를 확인하십시오.

0

당신은 할 수 없습니다. 유일한 가능한 것은 .NET 1.x를 대상으로 재 컴파일하는 것입니다.

+0

왜 이것이 .NET과 관련 있다고 가정합니까? – Aardvark

1

일반적으로 컴파일러 중 하나가 다른 컴파일러와 명시 적으로 호환되지 않는 한 컴파일 된 C++ 라이브러리 (동적 또는 정적)를 다른 컴파일러에서 사용할 수 없습니다.

'제 3 자'또는 Windows DLL에 대한 일부 답변이 있습니다. 그러나, 나는 그 DLL의 전부는 아니더라도 대부분이 C API가 아니라 C API를 사용하고 있었음을 기꺼이 알았습니다. C++ ABI (응용 프로그램 바이너리 인터페이스)는 표준화되지 않았습니다. 동일한 컴파일러의 다른 버전에서 이름 맹 글링과 같은 것이 보장되지는 않으며 컴파일러 에 따라 호출 규칙이 다를 수 있습니다.

사용할 수 보았다 어떤 링크를 설정하지 않았지만, 처음에 말했듯이, 일반적으로 다른 컴파일 된 코드의 정적 또는 동적 컴파일 C++ 라이브러리를 사용할 수없는 빠른 구글 검색 컴파일러. C는 다른 짐승이고 그 대답은 완전히 다릅니다!

+0

더 자세한 내용을 추가 할 수 있습니까? 그것은 정말로 도서관들 사이에서 앞뒤로주고받는 것에 달려 있습니다. 확실히 Windows API DLL (vC++의 * a * 버전으로 작성)은 vC++ 사용자가 만든 모든 버전의 응용 프로그램 (일부는 6.0, 2003, 2008, 2010 등)에서 작동합니다. – Aardvark

관련 문제