Я планирую использовать libcurl в моем проекте. Я скачал исходный код библиотеки, собрал и интегрировал его в небольшое приложение POC. Я могу собрать и запустить приложение без каких-либо проблем с созданными файлами libcurl.dll и libcurl_imp.lib. Теперь, когда я интегрирую ту же библиотеку в свой проект, я получаю ошибки компоновщика.
6> foo.obj: ошибка LNK2001: неразрешенный внешний символ __imp__curl_easy_setopt
6> foo.obj: ошибка LNK2001: неразрешенный внешний символ __imp__curl_easy_perform
6> foo.obj: ошибка LNK2001: неразрешенный внешний символ __imp__curl_easy_cleanup
6> foo.obj: ошибка LNK2001: неразрешенный внешний символ __imp__curl_global_init
6> foo.obj: ошибка LNK2001: неразрешенный внешний символ __imp__curl_easy_init
Я исследовал и попробовал все способы обхода, такие как добавление CURL_STATICLIB определений, дополнительных библиотек , , изменение на / MT даже копирование библиотек в каталог выпуска но ничего не работает. Насколько я вижу, единственное различие между подходом № 1 и № 2 в моих шагах состоит в том, что № 1 - это консольное приложение, использующее libcurl.dll, в то время как в моем основном проекте это еще одна библиотека DLL, которая пытается связаться с libcurl.dll. Требует ли это каких-либо изменений в подходе? Могу ли я использовать один и тот же сгенерированный многопоточный файл DLL / MD для обоих (пробовал / MT тоже безуспешно) Есть другие идеи?
Ниже приведены параметры компоновщика.
----------------------------------------------- --За работой----------------------------------------------- -
/ OUT: «C: \ SampleFTP \ Release \ SampleFTP.exe» / НЕПРАВИЛЬНО: НЕТ / НОЛОГО
/ LIBPATH: "C: \ SampleFTP \ SampleFTP \ Release"
/ MANIFEST /MANIFESTFILE:"Release\SampleFTP.exe.intermediate.manifest "
/ DEBUG /PDB:"c:\SampleFTP\release\SampleFTP.pdb "
/ SUBSYSTEM: CONSOLE
/ OPT: REF / OPT: ICF / LTCG
/ MACHINE: X86
/ ERRORREPORT: ПОДСКАЖИТЕ
libcurl_imp.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
----------------------------------------------- --За работой----------------------------------------------- -
---------------------------------------------- NotWorking -------------------------------------------------
/ OUT: "....... \ nt \ Win32 \ Release / foo__tests.dll" / ДОПОЛНИТЕЛЬНО: НЕТ / НОЛОГО
/ LIBPATH: "C: \ FullLibPath \ libcurl_libs"
/LIBPATH:"......\nt\Win32\Release»
/ DLL
/ MANIFEST /MANIFESTFILE:".\foo__tests\Win32\Release\foo__tests.dll.intermediate.manifest "/ DEBUG /PDB:".......\nt\Win32\Release/foo_tests.pdb"
/ OPT: REF / OPT: ICF / LTCG
/IMPLIB:".......\nt\Win32\Release/foo_tests.lib»
/ MACHINE: X86
/ ERRORREPORT: ПОДСКАЖИТЕ
odbc32.lib odbccp32.lib util_process.lib wsock32.lib Version.lib libcurl_imp.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib оболочка32.lib объект ole32.lib lib odbccp32.lib
"...... \ NT \ win32 \ релиз \ otherlib1.lib"
"...... \ nt \ win32 \ release \ otherlib2.lib"
---------------------------------------------- NotWorking -------------------------------------------------