Вопрос

(Оригинальный вопрос был задан там: http: //www.ogre3d .org / phpBB2 / viewtopic.php? t = 44832 )

Кто-то спросил: " Хотелось бы собрать все в vs2008 (VC9), PhysX SDK построен на vs2005 (VC8). Может ли это вызвать какие-либо проблемы при использовании всех скомпилированных библиотек vc9 и в сочетании с этой библиотекой vc8? & Quot;

Я ответил, что за день до того, как я попытался использовать файл .lib (и файл .dll), созданный с помощью VC8, и включить его в скомпилированный исполняемый файл vc9, компилятор не смог открыть файл .lib.

Теперь другие ответили, что сделали это без проблем ....

Я не могу найти информацию о совместимости lib между vc9 и vc8.

так ... Помощь?

Это было полезно?

Решение

Формат библиотеки: COFF ( http: // msdn.microsoft.com/en-us/library/7ykb2k5f(VS.71).aspx ), также COFF используется в формате PE. Таким образом, я ожидаю, что большинство, если не все библиотеки, созданные с использованием vc8, будут связаны с vc9.

Однако я обнаружил в msdn поток, в котором MS, похоже, не гарантирует, что библиотеки, скомпилированные с VC8, будут хорошо связываться с VC9. http: // social .msdn.microsoft.com / Форум / EN-US / vcgeneral / резьба / 8042a534-aa8b-4f99-81ee-e5ff39ae6e69 / )

Принимая во внимание эти 2 бита информации, я бы пришел к выводу: хотя MS не гарантирует полную 100% совместимость, я ожидаю, что в большинстве случаев подключение библиотеки vc8 к vc9 будет работать.

Надеюсь, это поможет. Постскриптум Вы пишете "Компилятору не удалось открыть файл .lib". Линкер - это тот, кто пытается открыть библиотеки, которые нужно связать, а не компилятор.

Другие советы

Это работает, но у вас возникают проблемы при совместном использовании объектов CRT / STL.

Поэтому, когда вы делаете 'new' в библиотеке vc8 и возвращаете ее в функцию vc9, которая, в свою очередь, удаляет этот объект, вы получаете утверждение от delete.

 T* funcInVc8Lib()
 {
     return new T();
 }

 void funcInVC9Program()
 {
     T* p = funcInVc8Lib();
     // ...
     delete p; // it should at least assert here (in _CrtIsValidHeapPtr() )
 }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top