是的,这是一个noob问题......
到目前为止,我一直在为我的所有项目使用Dev-C ++,但它非常过时,所以库在哪里。所以我打开了我的Visual C ++副本并复制了代码。当我编译时,会弹出一百万个错误,好像我的代码的每一行都是糟糕的。我不想再从头开始这个项目了。
问题:为什么Dev-C ++和VC ++的编译方式不同?我听说他们使用不同的编译器,但它仍然是C ++。我看到的第一个错误是const char *和std :: string之间的无效比较。
无论如何,有没有办法让VC ++在编程上不那么严格,就像Dev-C ++一样。或者我应该知道Dec-C ++和VC ++编译器之间的一些主要区别。
大多数错误似乎与std :: string相关,或LPCWSTR(我可以自己修复)。
对于这个非常广泛无用的话题感到抱歉,我知道。
-Alex
答案 0 :(得分:4)
首先,一些注释,因为许多Dev-C ++用户感到困惑(我曾经是)
Dev-C ++ 不是编译器。编译器是GCC(或者更确切地说,是GCC的修改版本,因此它可以在Windows上运行:MinGW)。 Dev-C ++是一个IDE:一个带有附加按钮的文本编辑器,在单击时调用MinGW和相应的参数。
没有更多。
Visual Studio也是如此:Visual Studio是IDE,它调用Visual Compiler(vc.exe),它实现VC ++,这是Microsoft的C ++标准实现。
第二:这不是一个菜鸟问题。您已经发现了可移植性问题,这在C和C ++中是一个很大的挫败感。 StackOverflow上的很多问题都是由于可移植性问题(一个适用于Windows但不适用于Linux的代码等)。
一般的经验法则是:1)将编译器的警告级别设置为最大值,2)在您要定位的所有平台上并行开发。
希望这有帮助。
答案 1 :(得分:1)
这不会回答所有问题,但可能有所帮助。
默认情况下,VC ++使用 unicode ,而MinGW(我相信DevCpp所基于的)使用 ansi 。
这可能会解释您关于字符串的问题:您基本上会传递char*
字符串,其中大多数函数需要wchar*
之类的字符。
我建议您修复代码以使其符合unicode标准,或者如果不需要unicode,则取消定义VC ++项目中的UNICODE
宏。
如你所说,你的旧代码是C ++,代码也是C ++,所以只要你不依赖编译器特定的行为就不应该有那么多工作。
你能给我们一些非常错误的样品吗?我们或许可以更准确地提供帮助。
答案 2 :(得分:0)
项目设置是否相同?也许您需要链接其他.libs或添加类似于Dev-C ++中的预处理器指令。如果您只是将代码复制并粘贴到项目中,那么您有效地将项目设置全部重新设置为默认值,对于许多项目而言,这将破坏构建。
除此之外 - 尝试使用代码行添加您收到的最常见错误之一,也许我们可以发表评论。
答案 3 :(得分:0)
Dev-cpp使用mingw作为其编译器。也许你会通过另一个IDE使用更新版本的mingw获得更多运气。这将有助于外部依赖(mingw使用gcc,它使用* .a文件链接到,VC ++使用* .lib文件)。
当你修改字符串和LPCWSTR时,请参阅ereOn的答案。确保正确定义了UNICODE和_UNICODE(在构建标志中为-DUNICODE或在VC ++项目选项中)。