我使用Cygwin为Windows应用程序使用的DLL构建源代码。
当我使用GCC core
/ GCC g++
时,如果应用程序在DLL中调用函数(包括printf
或malloc
),则该应用程序将崩溃。
当我使用Mingw64-x86_64-gcc-core
/ Mingw64-x86_64-gcc-g++
时,它会报告类似sys/socket.h:No such file or directory
的错误。
有人可以解释如何做吗?谢谢。
答案 0 :(得分:1)
第一个问题是由于尝试仅使用cygwin特定工具来构建独立的DLL(不依赖于cygwin1.dll)。 cygwin1.dll中存在多个malloc和其他C库调用之间存在冲突。
第二个原因是由于sys/socket.h
在Windows上不存在
请参阅以获取可能的解决方案:
Using sys/socket.h functions on windows
因此,您需要定义目标是Cygwin / Posix或Windows,并相应地选择编程样式和工具,不能混用。