【发布时间】:2017-05-24 17:58:34
【问题描述】:
我想在我的 cygwin 项目中使用 Bonjour library for Windows。我已经安装了这个库并且我有 dnssd.lib 文件但是 CMake 没有找到这个库。
如果我使用此代码:
find_path(BONJOUR_PATH dns_sd.h
PATHS "$ENV{BONJOUR_SDK_HOME}/Include")
find_library(BONJOUR_LIBRARY
NAMES dnssd.lib
PATHS "$ENV{BONJOUR_SDK_HOME}/Lib/x64")
include_directories(BONJOUR_PATH)
我收到这样的错误消息:
CMake 错误:此项目中使用了以下变量,但是 它们被设置为 NOTFOUND。请设置它们或确保它们已设置 并在 CMake 文件中正确测试:BONJOUR_LIBRARY (ADVANCED)
仅当我将上面的代码包装在 if(CYGWIN) /* code */ endif() 中时才会发生这种情况,但如果我将其包装在 if(WIN32) /* code */ endif() 中,那么它会正确找到库。
为什么会这样?
【问题讨论】:
-
cygwin 导入库是
*.dll.a不是*.lib -
但是使用 Bonjour SDK 我已经交付了 *.lib,我该怎么办?我不能将 unix 库与本机 Windows 库混合使用吗?
-
您不应该混合使用不同的库。或者您使用 Unix 约定或 Windows 约定。混合是多功能的配方。在 64 位上尤其如此,其中数据类型约定也不同。 cygwin.com/cygwin-ug-net/programming.html#gcc-64
-
但是 dnssd.lib 是第 3 方库,所以我该如何使用?我不能在 cygwin 中使用 3rd 方库吗?
-
Cygwin 有那个库。安装 libdns_sd-devel 包。 cygwin.com/packages/x86_64/libdns_sd-devel/…