Tag: 跨平台

适用于C或C ++的类似SWT的GUI工具包

你知道任何跨平台的GUI工具包,比如swt for C(在每个操作系统中使用默认小部件= eclipse.org/swt上的正确图片)? 有一个名为DWT的D语言的swt实现,但我需要它用于C或C ++。 谢谢。

在跨平台应用程序中使用snprintf

我正在编写一个C程序,预计将与所有主要编译器一起编译。 目前我在Linux机器上开发GCC,并在提交代码之前在MSVC上编译。 为了使交叉编译变得容易,我正在使用-ansi和-pedantic标志进行编译。 这很有效,直到我开始使用c89标准中没有的snprintf 。 GCC可以在没有-ansi开关的情况下编译它,但MSVC总是会失败,因为它没有C99支持。 所以我做了类似的事情, #ifdef WIN32 #define snprintf sprintf_s #endif 这很有效,因为snprintf和sprintf_s具有相同的签名。 我想知道这是正确的做法吗?

如何使用C学习OpenGL 3.x?

我知道有很多关于OpenGL的教程,但是我发现所有好的教程都使用了一些C ++库(主要是GLM),这些库很难让那些想要使用C或/和特定于Microsoft Windows的人使用。 我的问题是: 有没有人知道一个使用C并且不是Windows特定的OpenGL 3.x教程? OpenGL“红皮书”使用哪种编程语言?

是否有任何strcpy_s和/或TR24731-1的免费实现?

我有一个混合了C和C ++的旧项目。 它广泛使用C字符串以及strcpy , strcat , strncpy , strncat等。我发现了许多缓冲区溢出,我想使用更安全的函数,例如strcpy_s 。 MSVC包含这些function,但我需要能够在各种平台上运行的东西 – 至少是linux,osx和windows。 我知道strlcpy ,但是很多人都注意到( 例子 ),这确实不是一个改进。 那么:是否有strcpy_s , strcat_s等或整个TR24731-1免费实现? 我需要一些public domain或BSD ,但如果你知道其他许可证下的实现,请继续列出它们 – 我相信别人会受益。

C ++中的大文件支持

每个平台上的64位文件API都不同。 在windows中: _fseeki64 在linux中: fseeko 在freebsd:另一个类似的电话…… 我怎样才能最有效地使它更方便和便携? 有什么有用的例子吗?

跨平台,具有异步function的C / C ++ HTTP库

我正在寻找一个可以在Windows和Linux上运行的C / C ++库,它允许我以不同的方式查询多个web服务器(每分钟1000个)页面标题和下载网页,就像WinHttp库在Windows环境中一样。 到目前为止,我遇到了libCurl,它似乎做了我想要的,但是异步方面看起来很可疑。 您认为绕过使用库的想法并根据可实现此目的的套接字从头开始编写简单的东西是多么容易? 任何意见,建议或建议都会受到欢迎。 附录: – 任何机构都有关于使用libCurl进行此操作的评论,我说同步方面可能看起来很可疑,但有没有人有任何经验呢?

哪个具有1亿条记录的嵌入式数据库具有高效的C或C ++ API

我正在寻找一个跨平台的数据库引擎,它可以处理数以亿计的记录数据库而不会严重降低查询性能。 它需要有一个C或C ++ API,可以轻松,快速地构建记录并解析返回的数据。 非常气馁的产品是必须将数据转换为字符串以及从字符串转换才能将数据转换到数据库中。 存储IP地址之类的技术用户不需要或不需要这些开销。 这是一个非常重要的标准,因此如果您要参考产品,请明确说明他们如何提供这样的直接API。 不希望变得粗鲁,但我可以使用谷歌 – 请假设我找到了大多数主流产品而且我在问,因为通常很难找到他们提供的直接API,而不仅仅是围绕SQL的C包装器。 它不需要是一个RDBMS – 一个简单的面向ISAM记录的方法就足够了。 虽然主要需求是单用户数据库,但扩展到某种共享文件或服务器操作可能会在将来使用。 如果数据库来自小公司,则非常需要访问源代码(开源或通过许可)。 它不能是GPL或LGPL。

用于C的开源嵌入式文件系统(或单文件虚拟文件系统或结构化存储)库

我不确定这样的“一般”名称是什么。 我正在寻找一个库,它为我提供了一种文件格式,可以在不断扩展的单个文件中存储不同类型的二进制数据。 开源,非GPL(LGPL ok) C接口 文件格式是单个文件 使用类似POSIX的文件API中的多个文件(或使用其他API中的多个“blob”) 文件/结构编辑就地完成 可靠的第一,高效的第二 例子包括: 虚拟机的虚拟驱动器 whefs HDF CDF 的NetCDF 以上问题: whefs似乎不是很成熟,但最能描述我追求的东西 HDF,CDF,NetCDF是可用的(也非常可靠和快速),但它们相当复杂,我不完全相信它们支持不透明的二进制“blob” 编辑: 忘了提及另一个相关的问题: C / C ++中的简单虚拟文件系统 另一个类似问题: 是否有Windows复合文件的开源替代品? 编辑: 添加了就地编辑的条件。 编辑: whefs取代: whio_epfs

在本机C / C ++中生成的进程的标准输入和输出的跨平台重定向(使用解决方案编辑)

我有一个字符串命令,我想在写入其输入并读取其输出时异步执行。 听起来很简单,对,魔鬼在跨平台。 我的目标是MSVC / Win32和gcc / Linux,显然想要编写最少量的平台特定代码。 我的google-fu失败了,我的查询噪音太大,所以我从我所知道的开始。 popen – 简单易用,返回FILE *,易于随处消费。 但这是MSDN对_popen的评价 : 如果在Windows程序中使用,_popen函数将返回一个无效的文件指针,该指针会导致程序无限期地停止响应。 _popen在控制台应用程序中正常工作。 要创建重定向输入和输出的Windows应用程序,请参阅在Platform SDK中创建具有重定向输入和输出的子进程。 所以popen是不可能的(编辑:因为我希望我的代码在GUI应用程序中工作)。 在我看来,Windows的方式是相当丑陋和冗长的。 我可以使用平台特定的spawn代码,但我希望至少I / O代码是相同的。 然而,在这里,我在WinAPI HANDLE和C FILE*以及int文件描述符之间碰壁。 有没有办法将HANDLE “转换”为FILE*或int fd,反之亦然? (谷歌再次在这个问题上失败了,我尝试的所有关键词都被过度使用了) 有没有更好的方法来完成整个小平台特定代码? 外部库不是不可能的,但是依赖性维护是一种痛苦,尤其是在多个平台上,因此我希望减少依赖性。 我也没有在boost中找到这样的库。 只是为了记录,最终对我有用。 在Windows / MSVC上, CreatePipe() + CreateProcess()如此处所述,使用_open_osfhandle()后跟_fdopen()来获取进程输入和输出的FILE* 。 在Linux / GCC上,没有什么新东西,创建pipe() s; fork()然后dup2()管道; exec() ; 相关文件描述符上的fdopen() 。 这样,只有进程生成代码是依赖于平台的(这是正常的,因为在Windows上我想控制其他STARTUPINFO参数),写入输入和读取输出是通过标准FILE*和相关函数完成的。

为什么编写可移植的C程序很困难?

我想知道,为什么在没有包含胶水代码的情况下让程序在许多操作系统(如Windows和Linux)中运行太难了。 它们都共享相同的架构(x86),所以我认为它应该很简单。 此外,C是标准化的,那么为什么这些操作系统的实现不同? 为什么很难遵循标准并为所有操作系统实现通用库? 我用C编程了将近两年,目前我使用glib来实现可移植性。 我不是在寻找这个问题的解决方案,我已经为此目的使用了glib。 但是我想知道为什么有必要,为什么在没有差异的情况下制作一个C库是很困难的。 [加] 例如,当我用C / Glib编写程序时,我使用gchar / gint等类型确实是C基元类型,在wikipedia中关于glib,它说: “特征 在基本级别上,GLib提供了类型定义,替换了C基本类型char,int,float等,以便提高可移植性“ 为什么C原始类型不可移植和整个语言? 感谢所有的答案。