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가 맹 글링을하는 방식을 복사함으로써 이것을 달성합니다.)
3ds Max 고객 서비스에 문의하십시오. –
고객 서비스 란 무엇을 의미합니까? Autodesk 웹 사이트의 SDK 토론 포럼에는 내 질문에 대답하는 스레드가 있지만 아주 좋은 대답은 아닙니다. 몇몇 포스터는 VS2010이 정상적으로 작동하지만 Autodesk 직원이 "VS 2010은 최대 2011 년 플러그인에는 지원되지 않습니다."라고하는 게시물이 하나 있습니다. 나는 이것이 "당신의 책임하에 사용하라"는 의미라고 생각합니다. –