Articles of 移植

一般C ++ Linux到Windows的移植问题

背景:基于networking的服务( tcp+udp ,不是http )存在即将公开发布的C++ linux客户端API。 这个客户端API使用普通的tcp套接字,udp套接字,C ++命名空间和部分stl std::map和std::vector ,并将作为一组头文件和.a和.lib文件进行链接。 问题:刚开始考虑将这个C ++客户端API移植到Windows将需要什么。 在Windows下使用gcc / g ++有意义吗? 我的第一个倾向是这是行不通的,因为Windows上的开发人员通常使用Microsoft Visual Studio套件,他们将无法链接到由gcc生成的库。 这是一个正确的假设,还是海湾合作委员会提供一些漂亮的开关,产生微软编译器和微软链接器兼容的输出文件?

Cygwin不支持glibc

Cygwin常见问题解答有关于“glibc在哪里? :Cygwin不提供glibc。 它使用newlib,它提供了很多(但不是全部)相同的function。 将glibc移植到Cygwin将会很困难。 我很惊讶,并检查了发行包,因为我以前使用过它。 当我检查存储库时,glibc似乎确实是cygwin的一部分,直到2.10版本。 任何人都可以告诉glibc后续版本的移植难度吗?

壳牌转移程序 – 这是什么?

在shell中,我们有命令转移,但是我在一些例子中看到了它的转移3 为什么有一个class后的数字? 和它有什么关系? 它能做什么 ? 例: echo “arg1= $1 arg2=$2 arg3=$3” shift echo “arg1= $1 arg2=$2 arg3=$3” shift echo “arg1= $1 arg2=$2 arg3=$3” shift echo “arg1= $1 arg2=$2 arg3=$3” shift 输出将是: arg1= 1 arg2=2 arg3=3 arg1= 2 arg2=3 arg3= arg1= 3 arg2= arg3= arg1= arg2= arg3= 但是当我补充说,它不正确显示它。

Linux中有STDCALL吗?

我试图将一个Windows应用程序移植到Linux。 这个appplication用__stdcall属性标记了一些函数。 然而,我有一个朋友告诉我,stdcall只用于windows,在linux中没有任何意义(但在Windows GCC中是否存在)。 我试图searchGoogle,并得到了一些结果表明,Linux中有stdacll。 那么……? 此外,对于GCC,我看到了2个实现: __attribute__((__stdcall__))和__attribute__((stdcall)) (没有stdcall附近的下划线)。 哪一个是首选的(如果适用于Linux)? 谢谢!

在Linux中等待WaitForSingleObject和WaitForMultipleObjects

我正在从Windows到Linux迁移应用程序。 我WaitForSingleObject和WaitForMultipleObjects接口的问题。 在我的应用程序中,我产生了多个线程,其中所有线程都等待来自父进程的事件,或者每t秒周期运行一次。 我已经检查了pthread_cond_timedwait ,但是我们必须为此指定绝对时间。 我怎么能在Unix中实现这个?

什么是OSX上的Windows QueryPerformanceCounter的等价物?

我正在将一个库从Windows移植到* NIX(现在是OSX),现在没有人可以使用什么函数来代替Microsoft的QueryPerformanceCounter和QueryPerformanceFrequency?

为什么malloc有时不工作?

我正在将一个C项目从Linux移植到Windows。 在Linux上它是完全稳定的。 在Windows上,大多数时候都运行良好,但有时会出现分段错误。 我正在使用Microsoft Visual Studio 2010进行编译和debugging,看起来像有时我的malloc调用根本不分配内存,返回NULL。 机器有空闲的内存; 它已经通过了这个代码一千次,但它仍然发生在不同的位置。 就像我说的那样,它不会一直发生在同一个地方, 它看起来像一个随机错误。 有什么我必须在Windows上比在Linux上更小心吗? 我能做什么错了?

32位Windows和2GB文件大小限制(C与fseek和ftell)

我试图将一个小型的数据分析程序从一个64位的UNIX移植到一个32位的Windows XP系统(不要问:))。 但是现在我遇到了2GB文件大小限制的问题(在这个平台上不是64位)。 我已经search了这个网站和其他可能的解决scheme,但找不到任何可以直接翻译我的问题。 问题在于使用fseek和ftell。 有谁知道以下两个函数的修改,使他们在32位Windows XP上工作的文件大于2GB(实际订购100GB)。 nsamples的返回types是一个64位整数(可能是int64_t)是非常重要的。 long nsamples(char* filename) { FILE *fp; long n; /* Open file */ fp = fopen(filename, "rb"); /* Find end of file */ fseek(fp, 0L, SEEK_END); /* Get number of samples */ n = ftell(fp) / sizeof(short); /* Close file */ fclose(fp); /* Return number of samples in […]

什么可以代替端口上的glob_t和glob()到Windows?

我有这样的代码片段的代码: #include <glob.h> glob_t globBuf; const int result = glob(remoteFileName.c_str(), 0, 0, &globBuf); if (result == GLOB_NOSPACE) { … } else if (result == GLOB_NOMATCH) { … } else { … } 但是我没有在windows上findglob.h 我将在Microsoft Windows上使用什么来提供等同的function来从Linux移植此代码?

需要将MS Visual C ++移植到Linux G ++

我想先说我是计算生物物理学家,而不是软件工程师,所以我的编程知识仅限于科学计算(我使用C ++,Matlab和R)。 最近我被要求从MS Visual C ++移植一个庞大的代码包(〜10,000行)到Linux,在那里我开发了一些代码。 他们知道我在写Linux,直到一年之后,他们才告诉我,他们希望在Windows中与旧代码集成。 说实话,我不知道从哪里开始。 我能够将MakeFile放在一起并成功编译,但是我得到了一个分割错误,经过valgrind调查后,可能与数百个pipe理不当的内存分配有关。 有没有一个好的地方给我开始,不需要我学习微软的Visual C ++只是为了得到这个在Linux的工作? 任何帮助将不胜感激。 谢谢! 编辑:感谢迄今为止所有的帮助。 我绝对是“真正的”编程的新手,所以我甚至不清楚如何描述我的问题。 感谢您的理解并提供一些很好的起点。