Вопрос

Возможный Дубликат:
Что такое ошибка неопределенной ссылки / неразрешенного внешнего символа и как мне ее исправить?

Я работаю над переносом большого количества файлов .h и .lib с родного C ++ на управляемый C ++ для возможного использования в качестве ссылочной .dll в C #.

У меня есть .файлы библиотеки связаны, и до сих пор все шло гладко.После переноса последнего файла .h я столкнулся с проблемой, когда 2 функции вернулись с ошибкой ссылки:

error LNK2019: unresolved external symbol __imp__htonl@4 referenced in function
"public: void __thiscall Field::setCharacter(unsigned char,int)"
(?setCharacter@Field@@QAEXEH@Z) myutils.lib 

Я ссылался myutils.lib в параметрах компоновщика, так что это не должно быть проблемой.

Что странно, так это то, что у меня есть около 20 функций в этом конкретном файле .h, а все остальные связываются просто отлично, за исключением 3 функций.

Есть какие-нибудь идеи?

Это было полезно?

Решение

Отсутствующий символ - это __imp__htonl@4, которое представляет собой искаженное C ++ имя htonl, представляющее собой функцию, преобразующую длинное значение из host в network order.@4 используется для изменения входных параметров и является частью поддержки C ++ перегруженных функций, чтобы позволить компоновщику разрешить правильную функцию без коллизий имен.

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

Другие советы

Вы уверены, что подписи совпадают?Обязательно проверьте наличие подписи и постоянства.Кроме того, убедитесь, что функции не встроены.

Я столкнулся с этой ошибкой, когда компилировался с библиотекой, а затем изменил библиотеку перед связыванием.Убедитесь, что ваши заголовки совпадают с теми, что предоставлены вашей библиотекой (не скопированы из другой архитектуры и т.д.).Конечно, убедитесь, что вы ссылаетесь на ws2_32.lib (-lws2_32 для mingw / gcc).

Кроме того, если вы используете GCC / mingw, вы можете захотеть взглянуть на это: Ошибка компоновщика MinGW:винсок

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top