Art*_*yom 3 unix winapi build cmake visual-c++
我来自UNIX世界,我对Linux,Solaris,Cygwin和MinGW开发非常熟悉.最近我移植了一个支持MSVC的大项目(cppcms),包括使用CMake构建静态和动态库.
我总是得到绝对奇怪的问题:
现在我发现我应该根据我做的实际构建使用不同版本的ICU(调试/发布版本)(Debug/RelWithDebInfo - 应该使用Debug ICU,Release release ICU),所以我应该根据实际的搜索库更改实际约定仅在MSVC下调试/释放模式.否则应用程序只是不会开始在丢失的DLL上给出错误.
我在Mingw或Cygwin下使用GCC,使用Sun Studio的Open Solaris或使用gcc或intel编译器的Linux下没有任何此类问题.
而且我仍然有许多有线问题和有线错误以及非常奇怪的行为 - 甚至一些微不足道的事情在MSVC构建下都无法工作,当Solaris/Linux/Cygwin/Mingw在使用GCC从3.4到4.4,Sun Studio的一切正常工作时和英特尔编译器).但不是在MSVC下.
说实话,我不知道如何处理最后一个!因为对我来说它更像是环境问题.
我知道问题的定义并不是很明确.我认为我是一个非常有经验的开发人员,我知道如何编写可移植的和良好的C++代码.但是使用微软的原生 工具让我疯狂,因为我不知道如何解决这些问题.
问:我应该有经验的Unix程序员在Win32 API的相当不错的基础它开始使用正版Microsoft工具时,应该知道吗?
PS:有人可以解释为什么"Release With Debug Info"需要调试版本的MSVC运行时?为什么存在两个版本的运行时?
PPS:请注意我没有Win32 API的问题,实际上Windows GCC构建工作正常.
澄清:
我正在寻找来自Unix世界的程序员可能陷入的陷阱.
例如,从Linux迁移到Solaris时:确保使用-mt或
-pthreads使用多线程程序编译代码时,使用-lpthread链接是不够的.
PS:有人可以解释为什么"Release With Debug Info"需要调试版本的MSVC运行时?
它没有.
为什么存在两个版本的运行时?
因为调试版本会进行更多的错误检查.
而且我仍然有许多有线问题和有线错误以及非常奇怪的行为 - 即使是一些微不足道的东西在MSVC构建下也不起作用,
Run Code Online (Sandbox Code Playgroud)* What am I doing wrong?
没有告诉我们你得到的" 有线问题和有线错误以及非常奇怪的行为 ".
Run Code Online (Sandbox Code Playgroud)* Where should I start?
通过告诉我们您遇到的具体错误和问题.
Run Code Online (Sandbox Code Playgroud)* What do I miss?
阅读文档并学习工具.
如果你的问题是"我怎么读才能成为一名优秀的Windows程序员?" 那么我的答案是:一切从杰夫·里克特,作为一个开始.
| 归档时间: |
|
| 查看次数: |
353 次 |
| 最近记录: |