2

是的,这是一个菜鸟问题...

到目前为止,我一直在为我的所有项目使用 Dev-C++,但它已经非常过时了,图书馆也是如此。所以我打开了我的 Visual C++ 副本并复制了代码。当我编译时,会弹出一百万个错误,就好像我的代码的每一行都是狗屎一样。我不想从头开始重新开始这个项目。

问:为什么Dev-C++和VC++编译不一样???我听说他们使用不同的编译器,但它仍然是 C++。我看到的第一个错误是 const char* 和 std::string 之间的无效比较。

无论如何,有没有办法让 VC++ 对编程不那么严格,就像 Dev-C++ 一样。或者我应该知道的 Dec-C++ 和 VC++ 编译器之间是否存在一些主要差异。

大多数错误似乎与 std::string 相关,或 LPCWSTR(我可以自己修复)。

对不起,我知道这个非常广泛和无用的话题。

-亚历克斯

4

4 回答 4

4

先说几点注意事项,因为很多Dev-C++用户很困惑(我以前也是)

Dev-C++不是编译器。编译器是 GCC(或者,更准确地说,是 GCC 的修改版本,以便在 Windows 上运行:MinGW)。Dev-C++ 是一个 IDE:一个带有附加按钮的文本编辑器,单击该按钮时会使用适当的参数调用 MinGW。

而已。

Visual Studio 也一样:Visual Studio 是 IDE,它调用 Visual Compiler (vc.exe),它实现了 VC++,它是微软对 C++ 标准的实现。

第二:这不是一个菜鸟问题。您已经发现了可移植性问题,这是 C 和 C++ 中令人沮丧的一大问题。StackOverflow 上的很多问题都是由于可移植性问题(适用于 Windows 但不适用于 Linux 的代码等)。

一般的经验法则是 1) 将编译器的警告级别设置为最大值,以及 2) 在您所针对的所有平台上并行开发。

希望这可以帮助。

于 2010-08-24T12:09:20.627 回答
1

这不会回答所有问题,但它可能会有所帮助。

默认情况下,VC++ 使用unicode而 MinGW(我相信 DevCpp 是基于它的)使用ansi

这可能会解释您关于字符串的问题:您基本上是在传递char*大多数函数需要类似wchar*.

UNICODE如果不需要 unicode ,我建议您修复您的代码以使其符合 unicode,或者取消定义 VC++ 项目中的宏。

正如你所说,你的旧代码是 C++,代码也是 C++,所以不应该有那么多工作......只要你不依赖编译器特定的行为。

你能给我们一些严重错误的例子吗?我们也许能够更准确地提供帮助。

于 2010-08-24T11:53:09.260 回答
0

项目设置是否相同?也许您需要链接额外的 .libs 或添加与 Dev-C++ 中类似的预处理器指令。如果您只是将代码复制并粘贴到项目中,您实际上是在将项目设置全部重新设置为默认值,这对于许多项目来说会破坏构建。

除此之外-尝试使用代码行将您收到的最常见错误之一添加到问题中,也许我们可以发表评论。

于 2010-08-24T11:52:46.853 回答
0

Dev-cpp 使用 mingw 作为其编译器。通过另一个 IDE,使用更新版本的 mingw 可能会更幸运。这将有助于解决外部依赖关系(mingw 使用 gcc,它使用 *.a 文件链接到,VC++ 使用 *.lib 文件)。

当您提到字符串和 LPCWSTR 时,请参阅 ereOn 的答案。确保正确定义了 UNICODE 和 _UNICODE(在构建标志中作为 -DUNICODE 或在 VC++ 项目选项中)。

于 2010-08-24T12:06:19.513 回答