gpt4 book ai didi

unix - 经验丰富的 Unix 程序员使用 Microsoft 工具应该注意什么?

转载 作者:行者123 更新时间:2023-12-04 19:38:21 25 4
gpt4 key购买 nike

我来自 UNIX 世界,我对 Linux、Solaris、Cygwin 非常熟悉和 MinGW 开发。最近我移植了我的一个支持 MSVC 的大型项目 (cppcms),包括使用 CMake 构建静态和动态库。

而且我总是遇到非常奇怪的问题:

  1. 我有 CMake build issues因为 Windows 编程 lacks naming convention用于导入和静态库。
  2. 现在我发现我应该根据我做的实际构建(调试/RelWithDebInfo - 应该使用调试 ICU,发布版本 ICU),所以我应该根据 MSVC 下的调试/ Release模式更改搜索库的实际约定。否则应用程序将不会开始在缺少 DLL 时给出错误。

    我在使用 GCC 的 Mingw 或 Cygwin、使用 Sun Studio 的 Open Solaris 或使用 gcc 或 intel 编译器的 Linux 下没有任何此类问题。

  3. 而且我仍然有许多有线问题和有线错误以及非常奇怪的行为——即使是一些微不足道的事情也不起作用在 MSVC 构建下,当在 Solaris/Linux/Cygwin/Mingw 下使用 3.4 到 4.4 的 GCC 一切正常时,Sun Studio 和 Intel 编译器)。但不在 MSVC 下。

    说实话,我不知道如何处理最后一个!因为在我看来它更像是环境问题。

我知道这个问题并没有很好地定义。我觉得我很有经验开发人员和我知道如何编写可移植且良好的 C++ 代码。但是使用 Microsoft native工具让我对我不知道如何解决的问题发疯。

问题:经验丰富的 Unix 程序员在 Win32 API 基础上应该知道什么时候开始使用正版 Microsoft 工具?

P.S.:有人能解释一下为什么“Release With Debug Info”需要调试版的 MSVC 运行时吗?为什么存在两个版本的runtime

P.P.S.:请注意,我对 Win32 API 没有任何问题,实际上 Windows GCC 构建工作绝对正常。

说明:

我正在寻找来自 Unix 世界的程序员可能会陷入的陷阱。

例如,从 Linux 迁移到 Solaris:确保使用 -mt 编译代码或-pthreads 使用多线程程序时,与 -lpthread 链接是不够的。

最佳答案

P.S.: Can someone explain why "ReleaseWith Debug Info" requires Debugversion of MSVC runtime?

没有。

And why theretwo versions of runtime exist at all?

因为调试版本做了更多的错误检查。

And I still have numerous wired issuesand wired bugs and very strangebehavior -- even some trivial thingsdo not work under MSVC builds,

* What am I doing wrong?

没有告诉我们你得到了什么“有线问题和有线错误以及非常奇怪的行为

* Where should I start?

通过告诉我们您遇到的具体错误和问题。

* What do I miss?

阅读文档并学习工具。

如果您的问题是“我应该阅读哪些内容才能成为一名优秀的 Windows 程序员?”那么我的答案是:来自Jeff Richter 的所有内容,作为开始。

关于unix - 经验丰富的 Unix 程序员使用 Microsoft 工具应该注意什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2145176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com