Articles of 移植

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的工作? 任何帮助将不胜感激。 谢谢! 编辑:感谢迄今为止所有的帮助。 我绝对是“真正的”编程的新手,所以我甚至不清楚如何描述我的问题。 感谢您的理解并提供一些很好的起点。

什么是摆脱“警告C4267可能的数据丢失”的最佳策略?

我将一些遗留代码从win32移植到win64。 不是因为win32对象的大小对于我们的需要来说太小了,而是因为win64现在更加标准化了,我们希望把我们所有的环境都移植到这种格式(我们还使用了一些第三方库,在64位上提供比在32位上更好的性能) 。 我们结束了吨; 警告C4267:“参数”:从“size_t”转换为“…”,可能会丢失数据 主要由于代码如: unsigned int size = v.size(); 其中v是STL容器。 我知道为什么这个警告是有道理的,我知道为什么发出这个警告,以及如何修复这个警告。 然而,在这个特定的例子中,我们从来没有遇到过去容器大小超过unsigned int的最大值的情况….所以当代码移植到64位环境时,没有理由出现这个问题。 我们讨论了抑制这些嘈杂警告的最佳策略是什么(它们可能隐藏了一个我们将会错过的相关内容),但是我们无法对这个恰当的策略做出决定。 所以我在这里问这个问题,最好的推荐策略是什么? 1.使用static_cast 使用static_cast 。 做unsigned int size = static_cast<unsigned int>(v.size()); 。 我不喜欢这样做,因为我们放弃了64位的function来将大量的数据存储在一个容器中。 但是,因为我们的代码从来没有达到32位的限制,所以这似乎是一个安全的解决scheme… 2.用size_treplaceunsigned int 这是绝对困难的,因为在上面的例子中, unsigned int size对象可以用于其他函数,保存为class属性,然后删除单行警告可能会导致数百个代码更改… 3.禁用警告 这很可能是一个非常糟糕的主意,因为它也会在这种情况下禁用警告uint8_t size = v.size()这肯定可能会导致数据丢失…. 4.定义一个“安全演员”*function并使用它 类似于 : template <typename From, typename To> To safe_cast( const From& value ) { […]