编译C代码时出现异常错误

时间:2019-01-15 13:50:17

标签: c windows gcc zeromq mingw-w64

  • 我已经构建了zeroMQ解决方案,即libzmq和czmq,我使用cmake-3.13配置并生成了vs 2015,从而为我的Windows 10系统构建了解决方案。
  • 我能够成功运行czmq_selftest.exe,但是当我尝试运行示例代码时,出现以下错误-

这是我的目录结构-

  

C:\ Program Files \ czmq \ examples \ security \ hello.c   C:\ Program Files \ czmq \ include

hello.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;
}

我正在使用“ MinGW64”来编译以上代码-

上面的代码最初给了我

  

$ gcc hello.c -o你好   hello.c:5:10:致命错误:czmq.h:没有这样的文件或目录

虽然我尝试手动给出我得到的头文件路径-

  

gcc hello.c -o hello -I“ C:\ Program Files \ czmq \ include”

C:\Ruby25-x64\msys64\tmp\ccF5oCT1.o:hello.c:(.text+0x22): undefined reference to `__imp_zsock_new_checked'
C:\Ruby25-x64\msys64\tmp\ccF5oCT1.o:hello.c:(.text+0x3b): undefined reference to `__imp_zsock_set_curve_server'
C:\Ruby25-x64\msys64\tmp\ccF5oCT1.o:hello.c:(.text+0x64): undefined reference to `__imp_zsock_destroy_checked'
collect2.exe: error: ld returned 1 exit status

我找不到任何可以帮助我解决此错误的信息。

1 个答案:

答案 0 :(得分:0)

您应该这样更改第一行:

#include "path/czmq.h"

这是告诉C包含文件在不同目录中的方法

如果包含文件位于同一目录中,则该行变为

#include "czmq.h"

恕我直言,第二个错误意味着您在包含文件中没有正确的定义