Ошибка связывания LNK2019 в MSVC, неразрешенные символы с префиксом __imp__, но должно быть из статической библиотеки

У меня возникают проблемы с компоновкой в ​​MSVC для проекта, который я написал для g ++. Вот проблема:

Я создаю libssh как статическую библиотеку как часть моего приложения, добавляя цель в cmake с помощью

add_library (ssh_static STATIC $ libssh_SRCS)

Libssh находится на C, поэтому у меня есть 'extern " C "{...} ', обертывающий включения в моих исходных кодах C ++. Затем я связываю цель ssh_static с моим исполняемым файлом sshconnectiontest с помощью

target_link_libraries (sshconnectiontest ... ssh_static ...)

Все это отлично работает в Linux с gcc, но теперь в MSVC я получаю

error LNK2019: unresolved external symbol __imp__[function names here] referenced in [filename]

для каждого Я использую функцию libssh.

Есть идеи, что не так? Я' Мы где-то читали, что префикс imp означает, что компоновщик ожидает связать .dll, но этого не должно быть, поскольку ssh_static объявлен статической библиотекой в ​​вызове add_library ...

25
задан Jack Kelly 15 September 2010 в 02:29
поделиться