Существует короткий ответ от Microsoft по этому вопросу:
https://connect.microsoft.com/VisualStudio/feedback/details/470376/odbc-application-linking-with-odbccp32-lib-gets-link-errors-in-vs2010-beta-1?wa=wsignin1.0#tabs
По сути, их ответ, похоже, не решает проблему.
Наше приложение должно статически ссылаться на библиотеки C, но при попытке сделать это возникает ошибка компоновщика. Похоже, что ответ Microsoft - «динамически связывать», но это не вариант. Их альтернатива - «использовать версию odbccp32.lib, поставляемую с Vista SDK». Однако я не знаю, как заставить VisualStudio 2010 использовать другую версию библиотеки ODBC?
Я только что провел последний час, пытаясь найти все возможные варианты поиска в файлах .vcxproj и .sln для любых ссылок на odbccp32.lib. Никто. Я так же искал ODBC. Никто. Рассматривая все опции компилятора и компоновщика для рассматриваемого проекта (ов): ничто не относится к ODBC вообще. Единственное соединение между нашим приложением и ODBC, которое я вижу, это #include и . Однако даже эти файлы не ссылаются на odbccp32.lib (или любую другую опцию .lib или linker).
Единственные ссылки на odbccp32.lib, которые я вообще могу найти, находятся в файлах .obj. Таким образом, кажется, что VS2010 автоматически знает, с какими библиотеками ODBC связываться, основываясь на том, на какие функции ссылается наше программное обеспечение (например, SQLConnect ()).
Так как я могу:
1) "получить версию odbccp32.lib для Vista SDK"?
2) заставить VS2010 связываться с этой версией?
1020 * -ИЛИ- *
Есть ли лучший способ решить это ?! В настоящее время я не могу перейти к преобразованию нашего программного обеспечения с VS2008 -> 2010, если я не смогу найти способ заставить эту глупую программу скомпилироваться.
ПРИМЕЧАНИЕ. По-видимому, я мог бы заставить систему компилироваться с использованием инструментов 2008 года, что может «вылечить» это. Но это означает изменение всех наших проектов вверх и вниз по цепочке, чтобы сделать это, что довольно далеко назад и противоречит всему смыслу перехода к 2010 году, не так ли?
Для любопытных, точная ошибка компоновщика:
odbccp32.lib(dllload.obj) : error LNK2019: unresolved external symbol __imp___vsnprintf referenced in function _StringVPrintfWorkerA@20