2011-01-19 2 views
2

3ds Max SDK에 나열된 요구 사항은 Visual C++ 9.0 (Visual Studio 2008)을 사용하여 3ds Max 2011 용 플러그인을 빌드해야합니다.특정 버전의 Visual C++로 3ds Max 플러그인을 빌드해야하는 이유는 무엇입니까?

다른 버전의 Visual C++로 DLL을 만들면 이진이 동일하지 않습니까? 이것은 단순히 올바른 컴파일러 설정을 선택하는 문제입니까?

Visual C++ 2010 (Visual Studio 2010)을 사용하여 플러그인을 빌드하려고하면 어떤 문제가 발생합니까?

+0

3ds Max 고객 서비스에 문의하십시오. –

+0

고객 서비스 란 무엇을 의미합니까? Autodesk 웹 사이트의 SDK 토론 포럼에는 내 질문에 대답하는 스레드가 있지만 아주 좋은 대답은 아닙니다. 몇몇 포스터는 VS2010이 정상적으로 작동하지만 Autodesk 직원이 "VS 2010은 최대 2011 년 플러그인에는 지원되지 않습니다."라고하는 게시물이 하나 있습니다. 나는 이것이 "당신의 책임하에 사용하라"는 의미라고 생각합니다. –

답변

1

특히 3ds Max에 대해서는 잘 모릅니다 만, 일반적인 이유는 C 런타임 라이브러리입니다. 호스트 응용 프로그램이 CRT의 DLL 버전을 사용하면 플러그인도 동일한 버전을 사용해야합니다.

그렇지 않은 경우 플러그인이 malloc()을 사용하여 메모리를 생성하고이를 호스트 응용 프로그램에 전달한 다음이를 사용하여 free()을 호출하는 경우를 상상해보십시오. 플러그인과 호스트 응용 프로그램이 서로 다른 CRT를 사용하는 경우 free()에 대한 호스트 호출은 해당 메모리 블록이 호스트의 CRT가 아니기 때문에 실패하거나 충돌합니다.

+0

메모리 관리는 3ds Max SDK가 플러그인이 자체 메모리를 관리하도록 지정한다는 점을 제외하고는 그럴듯한 설명처럼 보입니다. –

+0

3ds Max SDK> 플러그인 작성> 플러그인 기본 사항> 플러그인 인스턴스 생성 및 제거에서 플러그인에 Create 메소드가있는 정적 클래스 인스턴스가 있고 DeleteThis 메소드가있는 다른 클래스가 있다고 말하면 . –

0

바이너리는 동일하지 않지만 필요한 것은 바이너리 인터페이스 여야합니다.

VS2010을 사용할 수없는 이유는 아직 생산 품질이 아니기 때문입니다. 그들은 VS2010 SP1을 최소한 기다려야한다고 생각합니다.

당신은 그들이 완고하고 완고하다고 생각합니까? 너의 모든 재미를 망칠. 그들은 이유가 있습니다. 좋은 것들. 이 때문에 같은 버그의

:

https://connect.microsoft.com/VisualStudio/feedback/details/565959

0

나는 플러그인 개발을위한 두 비주얼 스튜디오 2008과 2010를 사용합니다. 내가 본 유일한 차이점은 사용자가 2010 \ 2008에 대해 vs C++ 런타임 버전이 필요하다는 것입니다.

하지만 함정이있을 수 있지만 아직 문제가 발생하지 않았습니다.

0

C++에는 표준화 된 바이너리 인터페이스가 없습니다. 컴파일러는 각 심볼 이름 (즉, 각 함수 또는 정적 데이터)을 "mangles"하여 네임 스페이스 및 서명에 대한 정보를 포함하므로 네임 스페이스, 인수 오버로드, & c. 일할 수있다. 각 컴파일러는 이것을 수행하는 방법을 자유롭게 결정할 수 있습니다. 서로 다른 MSVS 컴파일러 버전은 서로 다른 방식으로 이름을 바꾸기 때문에 일반적으로 2005 년에 컴파일 된 C++ 라이브러리와 2008 년에 함께 컴파일 된 라이브러리를 연결할 수 없습니다. 여기에는 2005 년 실행 파일 (예 :)에서 2008 년 DLL을로드하는 것이 포함됩니다. 관련 함수가 extern "C"으로 표시된 경우 라이브러리 간의 인터페이스가 C 인 경우 이름 맹 글링을 방지하기 위해이 작업을 수행 할 수 있습니다. 실제로 차이점은 항상 크지는 않습니다. 예를 들어 VS2005 SP1을 사용하여 서비스 팩이없는 VS2005가 필요한 3ds Max 9 용 라이브러리를 컴파일하는 데 어려움을 겪은 적이 없었습니다.

Microsoft는이 비 호환성 문제를 해결하기 위해 VS2010에서 옵션을 도입 했으므로 VS2010은 VS2005 프로그램이나 VS2008 프로그램과 호환되는 바이너리를 생성 할 수 있습니다. 여러 3ds Max 버전으로 작업 할 수있는 플러그인을 만들어야하고 VS2010 버그로 인해 잡히지 않으면 좋은 옵션 일 것입니다. 또한 Intel C++ 컴파일러는 원하는 MSVS 버전과 호환되는 바이너리를 생성하는 모드를 제공합니다.이 버전은 취미 용도로 사용하거나 약간 비싼 가격표를 제공 할 수있는 경우 더 나은 옵션 일 수 있습니다. (그들은 MSVS가 맹 글링을하는 방식을 복사함으로써 이것을 달성합니다.)

관련 문제