Подтвердить что ты не робот

Как я могу избавиться от префикса __imp__ в компоновщике в VС++?

Я использую libcurl и получаю следующие ошибки компоновщика в VС++ 10.

1>main.obj : error LNK2019: unresolved external symbol __imp__curl_easy_strerror referenced in function "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl curl_httpget(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z)

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

4b9b3361

Ответ 1

Префикс __imp__ появляется при каждом подключении к DLL. Он не появляется при связывании со статически связанными библиотеками. Скорее всего, код создается для связи с библиотекой DLL import, но вы связали ее со статическим lib.

Префикс добавляется, когда вы отмечаете импортированную функцию с помощью __declspec(dllimport) - убедитесь, что ваш импорт не использует это, если не связан с DLL.

Ответ 2

Вы должны добавить CURL_STATICLIB в определения препроцессора в свойствах ваших проектов в MSVC

Ответ 3

При использовании созданных мастером проектов - установите флажок "Параметры времени выполнения" в разделе project properties -> C/C++ -> Code Generation.

По умолчанию обычно имеет значение "Многопоточная DLL". Вам нужны значения Multithreaded/MT и Multithreaded Debug/MTd.

Ответ 4

Используется файл заголовка, который определяет прототип функции с параметром, определяющим значение __declspec(dllimport)

Вам нужно либо переопределить оператор, который оценивает это (установить его ничем), либо использовать другой файл заголовка вообще.