【问题标题】:I get error #include <czmq.h> missing when running program运行程序时出现错误 #include <czmq.h>
【发布时间】:2019-01-11 10:20:42
【问题描述】:

从过去 4 天开始,我一直在尝试让 Zeromq 在我的 Windows 机器上运行,但似乎没有任何进展。

我按照给定的步骤解决了一些依赖问题。

我已经成功构建了 libzmq,czmq,libsodium。

我使用 cmake 3.12 进行配置,使用 VS2015 SDK 8.1 构建解决方案。

我能够运行 czmq_selftest.exe,但是它因一些事情而失败,这是不同的问题。

但是当我尝试运行基本程序 myapp.c

#include <czmq.h>
int main (void) {
 zsock_t *publisher = zsock_new (ZMQ_PUB);
 zsock_set_curve_server (publisher, true);
 puts ("Hello, Curve!");
 zsock_destroy(&publisher);
 return 0;
}

我看到了这个缺少库的问题,我尝试了给定的链接方法-

 gcc myapp.c -o myapp -lczmq -lzmq

但没有任何效果,如果有人可以提供一些解决方案,那将是非常有帮助的。

这是其他信息 -

OS - Windows 10
Cmake - 3.13.2
Visual Studio 2015, SDK 8.1
libzmq 4.3.0
czmq 4.1.1

来源:https://github.com/zeromq/czmq

更多信息-

我的系统-

C:\Users\P\go\src\github.com\zeromq\czmq\include

包含所有库。

我的程序在 -

C:\Users\P\go\src\github.com\zeromq\czmq\examples\security

谢谢

【问题讨论】:

  • czmq库安装在哪里?库头文件安装在哪里?您是否可能需要传递 -I(大写 i)选项来指定头文件的位置?当然,头文件 is 安装在某处?
  • 如果你的意思是“czmq.lib”和“libczmq.dll”,我已经添加了一些头文件、库文件的更多信息,然后它存储在“C:\Users\P\go\src \github.com\zeromq\czmq\Debug\"
  • 那么,您的问题是关于正确使用 CMake 还是命令行编译?如果您想询问 CMake 方法,请出示您的 CMakeLists.txt 脚本。否则,将cmake标记删除为不相关。
  • @Tsyvarev 好吧,我把 cmake 标签放在我使用 cmake 进行配置和生成时,我觉得这可能是失败的原因之一。好吧,如果它在这里有用,我会更新 CmakeList。
  • 我已经从这个问题中删除了 cmake 标签,我会为此提出单独的问题。

标签: c windows visual-studio zeromq


【解决方案1】:

编译器无法单独跟踪用户可能已在系统上安装的所有库。你必须告诉编译器它可以在哪里找到头文件或链接器库之类的东西。

要告诉编译器将路径添加到它用于搜索头文件的列表中,请使用 -I(大写 i)选项。

要告诉链接器将路径添加到它用于搜索链接器库的列表中,请使用-L 选项。

考虑到您在问题中提到的路径和 cmets,您需要同时添加 -I../../include 和 -L../../Debug。

也就是说,您的完整命令应该类似于

gcc myapp.c -o myapp -I../../include -L../../Debug -lczmq -lzmq

当然,这要求您按照您所说的在目录C:\Users\P\go\src\github.com\zeromq\czmq\examples\security 中。

【讨论】:

  • 上面的方法现在给了我奇怪的错误- C:/Ruby25-x64/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.2.1/../ ../../../x86_64-w64-mingw32/bin/ld.exe:跳过不兼容
  • 也只是为了简化和理解问题,我将丢失的头文件复制到包含 myapp.c 文件的目录中,但它仍然显示相同的问题。
  • @gadhvi 对于链接器错误,您可能应该提出一个新问题。对于另一个问题,如果要包含与源文件本身相同目录中的头文件,请改用双引号,如#include "czmq.h"
  • 嗯,你是对的,我需要问另一个,因为这实际上已经解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
相关资源
最近更新 更多