【问题标题】:Tiny C Compiler (TCC) and winsock?Tiny C 编译器(TCC)和winsock?
【发布时间】:2011-05-03 10:57:15
【问题描述】:

我可以使用 TCC 的套接字库吗?我在包含目录中找不到任何对 winsock 或 sys/socket.h 的引用。

如果我没记错的话,winsock 是 windows 平台 SDK 的一部分(?)如果是,我可以将它与 TCC 链接吗?

【问题讨论】:

    标签: c sockets winsock tcc


    【解决方案1】:
    1. 使用tiny_impdef.exe 通过命令行从 DLL 文件中导出定义:
      tiny_impdef.exe wsock32.dll -o .\lib\wsock32.def

    2. 您还需要源代码的头文件来包含它们。 MinGW 的(如winsock2.h、ws2tcpip.h、ws2spi.h...)可以和 TCC 一起复用。
      MinGW 编译器可以从 here 下载。只需将您需要的标头从 MinGW 的 include 目录复制到 TCC 的 include\winapi 目录即可。

    3. 在编译时,您需要告诉编译器您正在使用 Windows 套接字库:
      tcc.exe path\to\code.c -lwsock32 -o path\to\program.exe

    【讨论】:

    • C:\Users\compile\Desktop\tcc>tcc.exe code.c -lwsock32 -o program.exe 在包含在 code.c:6 中的文件中:c:/users/compile/desktop /tcc/include/winapi/winsock2.h:10:错误:找不到包含文件“_mingw_unicode.h”
    • 使用过 mingw-w64-v7.0.0: sourceforge.net/projects/mingw-w64 和 tcc-0.9.27-win64-bin.zip download.savannah.gnu.org/releases/tinycc
    • mingw-w64-v7.0.0.zip\mingw-w64-headers\crt 文件夹确实包含 _mingw_unicode.h
    • 但是,将所有标头从 mingw-w64-v7.0.0.zip\mingw-w64-headers\crt 删除到 tcc\include 并不能解决问题并不断显示不同的错误:
    • C:\Users\compile\Desktop\tcc>tcc.exe code.c -lwsock32 -o program.exe 包含在 code.c:5 中的文件中:包含在 c:/users 中的文件中/compile/desktop/tcc/include/stdio.h:9:在 c:/users/compile/desktop/tcc/include/crtdefs.h:10 中包含的文件中:在 c:/users/compile/desktop 中包含的文件中/tcc/include/corecrt.h:10:在从 c:/users/compile/desktop/tcc/include/_mingw.h:27 包含的文件中:c:/users/compile/desktop/tcc/include/stddef.h :18: 错误:';'预期(得到“外部”)
    【解决方案2】:
    tiny_impdef winsock.dll 
    

    将 winsock.def 复制到 lib/

    运行:

    tcc -lwinsock yourcode.c -o yourcode.exe
    

    【讨论】:

      【解决方案3】:

      根据Tinycc-devel mailing list

      你应该试试这个:

      tiny_impdef winsock.dll -o winsock.def
      tcc yourcode.c  winsock.def -o yourcode.exe
      

      【讨论】:

      • 在 google 代码搜索中找到 wsock32.h。它包括其他一些很容易找到的。工作就像一个魅力,干杯
      • @tm1rbrt 如果您从某个地方获取文件而不是在答案中使用该方法,您怎么知道它会像魅力一样工作?顺便说一句,tcc 要求 winsock.h 可能将 wsock32.h 重命名为 winsock.h 如果是这样,您可以将其放入您自己的答案中。而且它需要 common.h 里面没有。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 2011-08-11
      • 2011-12-18
      • 1970-01-01
      相关资源
      最近更新 更多