ошибки компоновщика — в C ++ можно ли ссылаться на файл .lib, который был скомпилирован с более ранней версией Visual Studio?

У меня есть проект, который мы собираемся перенести с Visual Studio 6 на Visual Studio 2010.

Проект опирается на сторонний файл .LIB, который предварительно скомпилирован. Эта сторонняя библиотека содержит только файлы заголовков .H (без файлов .CPP)

Я только что сделал краткий обзор решения для Visual Studio 2010 и получаю много ошибок во время соединения!

Некоторые из этих ошибок относятся к стороннему .lib-файлу «ServerToolkitRuntimeLIB.LIB»

Вот небольшой фрагмент из вывода моей сборки:

1>ServerToolkitRuntimeLIB.LIB(SerialIO.obj) : error LNK2001: unresolved external symbol "void  __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
1>ServerToolkitRuntimeLIB.LIB(OPCConversions.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
1>ServerToolkitRuntimeLIB.LIB(OPCMemoryAS.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
1>ServerToolkitRuntimeLIB.LIB(OPCAddressSpace.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
1>ServerToolkitRuntimeLIB.LIB(OPCServer.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)

Неужели я здесь без источника, чтобы перестроить стороннюю библиотеку, или здесь может быть что-то еще?

Заранее спасибо.

РЕДАКТИРОВАТЬ: сторонний .lib был изначально скомпилирован в Visual Studio 6.0

1

Решение

Если у вас VS6, вы можете попытаться создать там DLL-библиотеку, связав ее с имеющимся у вас файлом .lib и экспортировав необходимые символы.

Затем вы можете динамически связать эту dll в вашем проекте VS 2010 без использования .lib

1

Другие решения

Ваша сторонняя библиотека зависит от некоторой внутренней реализации VS6, которая удалена из VS2010, поэтому обычно вы не можете использовать ее без исходного кода, но есть хитрый способ ее использования.

Обычно все эти функции реализации являются открытыми в VS6, вы можете увидеть его реализацию и реализовать свою собственную версию и ссылаться на нее, если простая ссылка не решает проблему, вы должны скомпилировать свои реализации как отдельную DLL и связать ее!

0

По вопросам рекламы [email protected]