C++ Cygwin编译器:未定义的引用

C++ Cygwin编译器:未定义的引用,c++,cygwin,C++,Cygwin,当我尝试在Code:Blocks中编译一个随机项目时,Cygwin编译器会抛出一个关于自己库文件的未定义引用错误: /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libcygwin.a(_cygwin_crt0_common.o):_cygwin_crt0_common.cc:(.data+0x0): undefined reference to `___real__Znwj' /usr/lib/gcc/i686-pc-cygwin/3.4.4/../..

当我尝试在Code:Blocks中编译一个随机项目时,Cygwin编译器会抛出一个关于自己库文件的未定义引用错误:

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libcygwin.a(_cygwin_crt0_common.o):_cygwin_crt0_common.cc:(.data+0x0):
undefined reference to `___real__Znwj'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libcygwin.a(_cygwin_crt0_common.o):_cygwin_crt0_common.cc:(.data+0x8):
undefined reference to `___real__ZdlPv'
我正在链接netlink库以及WS2_32.lib


这是编译器问题吗?

其他提示,它来自
\u cygwin\u crt0\u common.cc
。所以很明显,我们缺少了一些核心的东西。您正在使用Cygwin版本的gcc,对吗?您是否尝试过
-lcygwin
?您也可以尝试
-mno cygwin


我的建议是通常使用vanilla MinGW,创建干净的windows二进制文件(在失去POSIX功能的情况下)

如果这是某种线索,
\uuuuznwj
是全局
操作符new(unsigned int)
的符号,
\uuuzdlpv
是全局
操作符delete(void*)
。我不知道
\uuuuu real
前缀表示什么。我猜您只需要链接到C++库,如果链接步骤中调用了<代码> G++< /COD>命令,则应该自动完成。你知道blocks用什么命令来链接程序吗?@MichaelBurr是对的。__Znwj是编译过程中发生的名称损坏。@MichaelBurr Code::blocks正在运行以下命令:g++-3.exe-LC:/Users/Public/Documents/PROJEKTE/chatserver/-LD:/CodeBlocks/include-LC:/Users/Public/Documents/PROJEKTE/chatserver/-o chatserver.exe.objs/main.o-lnetlink/cygdrive/c/Users/Public/Documents/PROJEKTE/chatserver/WS2_32.Lib-lnetlink c:/Users/Public/Documents/PROJEKTE/chatserver/WS2_32.Lib
-mno cygwin
在MinGW*/cygwin GCC中被删除/弃用。哇,我不知道。但那是“仅仅”一年前。。。我尽量避免cygwin。我相信MinGW*GCC4.6在您将
-mno cygwin
传递给它时会产生错误,那是一年多以前的事了。pythondistutils无法在该平台上使用的原因。