2013-06-01 2 views
3

Mac에서 D와 함께 libcurl을 사용하여 속도를 높이려고합니다.Mac에서 D의 std.net.curl을 사용할 때 libcurl 문제

최신 dmd2 컴파일러 (DMD64 D 컴파일러 v2.062)를 사용하고 있습니다.

다음 예제 컴파일 및 Windows에서 잘 작동합니다

수입 std.net.curl, std.conv, std.stdio;

~/src $ dmd dcurl.d 
Undefined symbols for architecture x86_64: 
    "_curl_easy_cleanup", referenced from: 
     _D3std3net4curl4Curl8shutdownMFZv in libphobos2.a(curl_1522_37c.o) 
    "_curl_easy_duphandle", referenced from: 
     _D3std3net4curl4Curl3dupMFZS3std3net4curl4Curl in libphobos2.a(curl_151e_149.o) 
    "_curl_easy_init", referenced from: 
     _D3std3net4curl4Curl10initializeMFZv in libphobos2.a(curl_151d_432.o) 
    "_curl_easy_perform", referenced from: 
     _D3std3net4curl4Curl7performMFbZi in libphobos2.a(curl_1528_2fb.o) 
    "_curl_easy_setopt", referenced from: 
     _D3std3net4curl4Curl3setMFE3etc1c4curl10CurlOptionlZv in libphobos2.a(curl_1525_14c.o) 
     _D3std3net4curl4Curl3setMFE3etc1c4curl10CurlOptionAxaZv in libphobos2.a(curl_1524_14c.o) 
     _D3std3net4curl4Curl3setMFE3etc1c4curl10CurlOptionPvZv in libphobos2.a(curl_1526_14c.o) 
     _D3std3net4curl4Curl5clearMFE3etc1c4curl10CurlOptionZv in libphobos2.a(curl_1527_207.o) 
    "_curl_easy_strerror", referenced from: 
     _D3std3net4curl4Curl11errorStringMFiZAya in libphobos2.a(curl_1520_4a1.o) 
    "_curl_global_cleanup", referenced from: 
     _D3std3net4curl4Curl19_sharedStaticDtor29FZv in libphobos2.a(curl.o) 
    "_curl_global_init", referenced from: 
     _D3std3net4curl4Curl19_sharedStaticCtor28FZv in libphobos2.a(curl.o) 
    "_curl_slist_append", referenced from: 
     _D3std3net4curl3FTP3dupMFZS3std3net4curl3FTP in libphobos2.a(curl_1518_ea.o) 
     _D3std3net4curl3FTP10addCommandMFAxaZv in libphobos2.a(curl_1518_ea.o) 
     _D3std3net4curl4HTTP3dupMFZS3std3net4curl4HTTP in libphobos2.a(curl_1517_140.o) 
     _D3std3net4curl4HTTP16addRequestHeaderMFAxaAxaZv in libphobos2.a(curl_1517_140.o) 
    "_curl_slist_free_all", referenced from: 
     _D3std3net4curl3FTP4Impl6__dtorMFZv in libphobos2.a(curl_1518_ea.o) 
     _D3std3net4curl3FTP13clearCommandsMFZv in libphobos2.a(curl_1518_ea.o) 
     _D3std3net4curl4HTTP4Impl6__dtorMFZv in libphobos2.a(curl_1517_140.o) 
     _D3std3net4curl4HTTP19clearRequestHeadersMFZv in libphobos2.a(curl_1517_140.o) 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 
--- errorlevel 1 

링킹 문제를 암시하는 것 같다 맥을 컴파일 할 때

void main() { 
    string content = to!string(get("dlang.org")); 
    writeln(content); 
} 

나는 다음과 같은 출력을 얻을.

나는에서 libcurl에 있습니다 /usr/lib/libcurl.3.dylib /usr/lib/libcurl.4.dylib /usr/lib/libcurl.dylib

하지만 난 여부를 확실하지 않다 dmd가 그들을 사용하려고합니다.

나는이 라이브러리를 사용하는 동일한 컴퓨터에서 C/C++로이 작업을 수행 했으므로 버전 문제이거나 다른 플래그를 컴파일러에 전달해야한다고 생각합니다.

모든 도움을 주시면 감사하겠습니다.

+0

현재 dmd2 버전을 수행하는 2.063 – sigod

답변

5

libcurl과 연결해야합니다. 기본적으로는 연결되어 있지 않습니다. 그래서, 대신

dmd dcurl.d 

당신은

dmd -L-lcurl dcurl.d 
+0

우수해야합니다! 응답 주셔서 감사합니다 - 이것은 완벽하게 작동합니다. – wayne

+2

또한 코드 상단에'pragma (lib, "curl")'을 넣고 dmd 링크를 자동으로 컬링 할 수 있습니다. – yaz

+0

또한 좋은 제안입니다. 감사! – wayne