C ++ Visual Studio 2010 не связывает собственную статическую библиотеку - PullRequest
0 голосов
/ 18 августа 2011

Я конвертирую проект C ++ Visual Studio 2005 в Visual Studio 2010, и я использовал это руководство в процессе. У меня осталась одна проблема: компоновщик не связывает собственную статическую библиотеку (это не сборка .NET, а библиотека третьей части sqsapi32.lib ). Я включил библиотеку sqsapi32.lib в Свойства-> Свойства конфигурации-> Компоновщик-> Ввод-> Дополнительные зависимости, но компоновщик продолжает уведомлять следующее предупреждение:

warning LNK4248: unresolved typeref token (01000014) for 'SQLDA'; image may not run

запуск файла .exe приводит к следующей ошибке: «Программа не может запуститься, потому что sqsapi32.dll отсутствует на вашем компьютере».

Как я могу это исправить? Работало с использованием Visual Studio 2005.

Ответы [ 2 ]

4 голосов
/ 18 августа 2011

Поскольку вы используете C ++ / CLI, это предупреждение ожидается от компоновщика.Есть много структур, которые просто объявлены как:

struct ABC;

и ABC используется базовой библиотекой (у вас нет исходного кода), и ABC предоставляется библиотекой вам непрозрачным образом.Вы можете избежать этого предупреждения, объявив поддельную структуру в исходном коде:

struct ABC 
{
};

Так что для вашего случая:

struct SQLDA{};

выполнит эту работу.1017 *

Это просто для удовлетворения компоновщика C ++ / CLI и не причинит никакого вреда.

3 голосов
/ 18 августа 2011

Предупреждение и ошибка, которую вы показали, не обязательно связаны (без каламбура!).

Чтобы обойти ошибку, убедитесь, что sqsapi32.dll находится в том же месте, что и exe.ты пытаешься бежать.

Удачи,

...