我不能够使用虚拟功能(Windows Vista中,Cygwin的,GCC 4.8.2)标准输入输出组合
#include <stdio.h>
class A
{
public:
// If I make g() as virtual, stdio doesn't print.
virtual void g() {}
};
int main()
{
A a; // Or I could remove this object to make stdio print.
printf("testing\n");
}
与“Borgleader”的提示,我发现用“-02”选项一起使用时它的工作原理。 链接似乎有/使用时没有“-02”是不同的。
/home/user> g++ test.cc
/home/user> ./a.exe
/home/user> ldd ./a.exe
ntdll.dll => /cygdrive/c/Windows/system32/ntdll.dll (0x77540000)
kernel32.dll => /cygdrive/c/Windows/system32/kernel32.dll (0x75790000)
cygwin1.dll => /usr/bin/cygwin1.dll (0x61000000)
cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0x6bf40000)
cygstdc++-6.dll => /usr/bin/cygstdc++-6.dll (0x6c480000)
/home/user> g++ -O2 test.cc
/home/user> ./a.exe
testing
/home/user> ldd ./a.exe
ntdll.dll => /cygdrive/c/Windows/system32/ntdll.dll (0x77540000)
kernel32.dll => /cygdrive/c/Windows/system32/kernel32.dll (0x75790000)
cygwin1.dll => /usr/bin/cygwin1.dll (0x61000000)
感谢selbie的建议,尝试GDB。 现在事情比较清楚一点。 我应该忘记的printf,程序甚至不加载! 使用选项“-02”,它工作正常(甚至在GDB)。
/home/user> g++ -g test.cc
/home/user> gdb ./a.exe
<<Edited for brevity>>
(gdb) break main
Breakpoint 1 at 0x40119e: file test.cc, line 14.
(gdb) run
Starting program: /home/user/a.exe
[New Thread 4888.0x13e0]
gdb: unknown target exception 0xc0000139 at 0x77549cfc
During startup program exited with code 0xc0000139.
另一个提示该程序不加载的是,即使我把睡眠(100),它立刻存在。
总结 :这个问题得到了更新整个Cygwin安装后问题
详细信息 :重新安装只是G ++编译器没有帮助的。 更新只是G ++编译器新版本并没有帮助。 更新整个开发类别没有帮助。 更新的底数类别没有帮助。 更新整个Cygwin安装帮助。 它仍然是每为什么以前的安装仍用“-02”选项时未知。 我还可以继续使用“-02”选项。 但是,我选择了做的cygwin的全面更新。