使用D'时的libcurl问题;Mac上的s std.net.curl

使用D'时的libcurl问题;Mac上的s std.net.curl,d,libcurl,D,Libcurl,我正在尝试在Mac上使用带D的libcurl 我正在使用最新的dmd2编译器(DMD64 D编译器v2.062) 以下示例在Windows上编译并运行良好: 导入std.net.curl、std.conv、std.stdio void main() { string content = to!string(get("dlang.org")); writeln(content); } 在Mac上编译时,我得到以下输出: ~/src $ dmd dcurl.d Undefine

我正在尝试在Mac上使用带D的libcurl

我正在使用最新的dmd2编译器(DMD64 D编译器v2.062)

以下示例在Windows上编译并运行良好:

导入std.net.curl、std.conv、std.stdio

void main() {
     string content = to!string(get("dlang.org"));
     writeln(content);
}
在Mac上编译时,我得到以下输出:

~/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
这似乎暗示了一个关联问题

我已在以下地点登记: /usr/lib/libcurl.3.dylib/usr/lib/libcurl.4.dylib/usr/lib/libcurl.dylib

但我甚至不确定dmd是否在尝试使用它们

我以前用C/C++做过(在使用这些库的同一台机器上),所以我认为这一定是版本控制问题,否则我需要向编译器传递一些标志


非常感谢您的帮助。

您需要链接libcurl。默认情况下,它不会链接到。因此,与其

dmd dcurl.d
你需要做什么

dmd -L-lcurl dcurl.d

当前的dmd2版本是2.063,您还可以在代码顶部添加
pragma(lib,“curl”)
,并自动添加dmd链接curl。这也是一个很好的建议。谢谢