Как я могу избавиться от префикса __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, правильным путем и т.д.
Ответы
Ответ 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)
Вам нужно либо переопределить оператор, который оценивает это (установить его ничем), либо использовать другой файл заголовка вообще.