У меня есть проект, который мы собираемся перенести с 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
Если у вас VS6, вы можете попытаться создать там DLL-библиотеку, связав ее с имеющимся у вас файлом .lib и экспортировав необходимые символы.
Затем вы можете динамически связать эту dll в вашем проекте VS 2010 без использования .lib
Ваша сторонняя библиотека зависит от некоторой внутренней реализации VS6, которая удалена из VS2010, поэтому обычно вы не можете использовать ее без исходного кода, но есть хитрый способ ее использования.
Обычно все эти функции реализации являются открытыми в VS6, вы можете увидеть его реализацию и реализовать свою собственную версию и ссылаться на нее, если простая ссылка не решает проблему, вы должны скомпилировать свои реализации как отдельную DLL и связать ее!