У меня есть простая программа на C ++ с зависимостью libcurl:
#include <curl/curl.h>
extern "C" int curlTest(void);
int curlTest(void) {
CURL *curl = curl_easy_init();
return 0;
}
Я хотел бы создать ее как общую библиотеку DLL, используя MinGW на Windows. Если скомпилирован и связан с Dynami c libcurl, все идет хорошо:
> g++ curlTest.cpp -c -o curlTestDynamic.o
> g++ curlTestDynamic.o -shared -o libCurlTestDynamic.dll -lcurl -lgdi32 -lws2_32
И если я перечисляю экспортированные символы libCurlTestDynamic.dll
с dumpbin
, только curlTest
отображается в выводе, как и ожидалось:
> dumpbin /exports libCurlTestDynamic.dll
...
ordinal hint RVA name
1 0 00001450 curlTest
...
Но если построено с stati c libcurl, этот curlTest
символ просто отсутствует:
> g++ -DCURL_STATICLIB curlTest.cpp -c -o curlTestStatic.o
> g++ curlTestStatic.o -shared -o libCurlTestStatic.dll C:/path_to/libcurl.a -lgdi32 -lws2_32
> dumpbin /exports libCurlTestStatic.dll
...
ordinal hint RVA name
1 0 000018A0 curl_easy_cleanup
2 1 000018F0 curl_easy_duphandle
...
(Lots of symbols like curl_* but no curlTest displayed)
...