Articles of 跨平台

MonoGame移植到Linux

我已经在Visual Studio 2015中使用C#和MonoGame框架在Windows 7(64位)上开发了一款游戏。 游戏在Windows上运行良好,但我也想让游戏在Linux上播放。 因此,我在Windows PC上安装了Ubuntu 15.10(64位)的VirtualBox,testing是否可以让我的游戏在Ubuntu上运行。 在尝试以不同的方式编译游戏之后,我看到了一些关于将MonoGame部署到Linux的问题: 是否有可能编译一个MonoGame游戏在Windows上的VisualStudio 2015 Linux版本… 1.1。 MonoGame Linux项目? 1.2。 MonoGame Windows OpenGL项目? 1.3。 MonoGame Windows项目? (我的游戏目前是) 如果[1.]需要在Linux上安装什么程序以运行此[1.x]版本? 是否有可能(并build议)在虚拟 Ubuntu机器上的MonoDevelop中编译游戏? 甚至有可能在虚拟 Ubuntu机器上运行MonoGame游戏? 什么是在Linux上的游戏适当的可执行文件扩展名? (因为Windows上的Linux项目只是build立一个.exe) 我几乎没有使用Linux的经验,所以我希望有人可以回答我这些问题,也许有将MonoGame游戏移植到Linux的经验的人。 谢谢。

在Windows上应该如何使用开源库?

有很多可以用Visual Studio编译的开源库。 我将一个程序从Linux移植到Windows,但依赖于一些库。 我不知道Windows上有关库的最佳实践。 在Linux上,这些库通常是发行版的一部分。 例如,要在Debian上使用sqlite ,只需要安装libsqlite3-dev ,包含文件和库(包括静态和dynamic)将自动安装并可用于您的程序。 如果你需要一个不同于你的发行版本的版本,你可以将它编译到你的主目录,安装到~/include和~/lib ,并设置适当的环境variables,以便你的编译器在searchpath中包含这些目录。 使用在Windows上作为源分发的库的最佳方法是什么? 如果我dynamic链接,而不是静态链接,是否有一种简单的方法将所需的DLL复制到输出目录,以方便重新分配(假设满足许可证要求)?

使用Symfony Process运行asynchronousPHP任务

对于耗时的任务(电子邮件发送,image processing…你明白了),我想运行asynchronousPHP任务。 在Linux上这很容易 ,但我正在寻找一种在Windows上工作的方法。 我希望它是简单的,因为它应该是。 没有大炮 ,没有SQL排队,没有再次安装的东西 …我只想运行一个该死的asynchronous任务。 所以我尝试了Symfony过程组件 。 问题是,同步运行任务可以正常工作,但是当它asynchronous运行时,它会沿着主脚本退出。 有没有办法来解决这个问题? composer require symfony/process 的index.php <?php require './bootstrap.php'; $logFile = './log.txt'; file_put_contents($logFile, ''); append($logFile, 'script (A) : '.timestamp()); $process = new Process('php subscript.php'); $process->start(); // async, subscript exits prematurely… //$process->run(); // sync, works fine append($logFile, 'script (B) : '.timestamp()); subscript.php <?php require './bootstrap.php'; $logFile […]

在OS X上编译C程序以在Ubuntu上运行

我有一个非常简单的C程序,只使用标准库函数进行一些encryption计算。 我将在Ubuntu(10.04,32位)上运行该程序,并使用带有-m32标志的cc在OS X 10.6上对其进行编译。 当我试图在Ubuntu上运行它时,我收到错误信息“无法执行二进制文件”。 当我在Ubuntu上编译它运行良好。 有什么简单的方法将OS X上的代码编译成可以在Ubuntu上运行的二进制文件? 如果不是,导致二进制不兼容的区别是什么?

如何在OSX中sorting-V?

我为Linux bash shell写了一个脚本。 一行获取文件名列表并对其进行sorting。 清单看起来像这样: char32.png char33.png […] char127.png 它从32到127.该列表的默认sorting是这样的 char100.png char101.png […] char32.png char33.png […] char99.png 幸运的是,有sort ,有正确的sorting清单(如第一个例子)的方便的-V开关。 现在,我必须将此脚本移植到OSX,并且在OSX中sort是缺less-V开关。 你有一个聪明的想法如何正确地sorting此列表?

在linux中打开文件夹窗口的标准方法?

我想在跨平台(windows / mac / linux)的Python应用程序中,在相应的文件pipe理器中打开一个文件夹窗口。 在OSX上,我可以用finder打开一个窗口 os.system('open "%s"' % foldername) 并在Windows上 os.startfile(foldername) 那么unix / linux呢? 有没有一个标准的方法来做到这一点,或者我有特殊情况下gnome / kde / etc和手动运行适当的应用程序(鹦鹉螺/ konqueror /等)? 这看起来像freedesktop.org人们可以指定的东西(一个python模块,类似于webbrowser ,也会很好!)。

我需要debuggingpthreads?

我想debugging我的自定义Linux发行版上的pthreads,但我错过了一些东西。 我的主机是Ubuntu 12.04,我的目标是使用crosstool-NG交叉编译器工具集构build的i486定制embedded式Linux,其余的操作系统是使用Buildroot制作的。 我将列举事实: 我可以在我的目标上运行multithreading应用程序 当我在目标上运行multithreading应用程序时, Google Breakpad无法创build崩溃报告。 当我在我的主机上运行完全相同的应用程序与完全相同的构buildBreakpad库将成功。 GDB无法在我的目标上debuggingmultithreading应用程序。 例如 $./gdb -n -ex "thread apply all backtrace" ./a.out –pid 716 dlopen failed on 'libthread_db.so.1' – /lib/libthread_db.so.1: undefined symbol: ps_lgetfpregs GDB will not be able to debug pthreads. GNU gdb 6.8 我不认为ps_lgetfpregs是因为这个问题。 我的crosstool构build了libthread_db.so文件,并将其放在目标上。 我的crosstool构build为我的目标创build了gdb,所以它应该与我在目标上运行的库相链接。 如果我在我的主机上运行gdb,对我的testing应用程序,我得到每个运行线程的回溯。 我怀疑Breakpad的问题与GDB的问题有关,但是我不能证实这一点。 唯一的共同点是缺乏multithreadingdebugging。 我的主机和目标之间有一些关键的区别阻止了我能够debugging目标上的pthreads。 有谁知道它是什么? 编辑: TI的Denys Dmytriyenko表示: 通常情况下,GDB不是很挑剔,你可以混合使用不同版本的gdb和gdbserver。 但是,不幸的是,如果您需要debuggingmultithreading应用程序,那么对于特定的API有一些依赖关系… 例如,如果您没有为线程支持正确构buildGDB,则可能会看到以下消息之一: […]

C / C ++中的跨平台unicode:使用哪种编码?

我目前正在开发一个应该在Windows和Linux上工作的业余爱好项目(C / C ++),全面支持Unicode。 可悲的是,Windows和Linux使用不同的编码,使我们的生活更加困难。 在我的代码中,我试图尽可能地使用数据,使Windows和Linux都变得简单。 在Windows中,默认情况下,wchar_t被编码为UTF-16,在Linux中被编码为UCS-4(如果我错了,请纠正我的错误)。 我的软件打开({_wfopen,UTF-16,Windows},{fopen,UTF-8,Linux})并将数据写入UTF-8文件。 到目前为止,这都是可行的。 直到我决定使用SQLite。 SQLite的C / C ++接口允许一个或两个字节的编码string( 单击 )。 当然这在Linux中不适用于wchar_t,因为Linux中的wchar_t默认是4字节。 因此,从sqlite的写入和读取需要转换为Linux。 目前,代码在Windows / Linux的例外情况下正在混乱。 我希望坚持在wchar_t中存储数据的标准思想: Windows中的wchar_t:文件path没有问题,读写sqlite没有问题。 无论如何,将数据写入文件应该使用UTF-8。 Linux中的wchar_t:由于UTF-8编码导致的文件pathexception,读/写到sqlite(wchar_t)之前的转换,以及将数据写入文件时的相同。 读完( 在这里 )我确信我应该坚持在Windows中的wchar_t。 但是在完成所有工作之后,麻烦就从移植到Linux开始了。 目前我正在考虑重做这一切,以坚持简单的字符(UTF-8),因为它适用于Windows和Linux,记住,我需要'WideCharToMultiByte'在Windows中的每个string来实现UTF-8。 使用简单的基于char *的string将大大减lessLinux / Windows的例外数量。 你有任何跨平台unicode的经验吗? 任何关于简单地将数据存储在UTF-8而不是使用wchar_t的想法?

文本编辑器与脚本…为Linux

有一段时间了,我一直在Windows上使用UltraEdit。 用熟悉的语言(JavaScript)编写脚本的能力已被certificate是非常有用的。 唯一的问题是,我不能在我的Linux机器上使用它。 是否有一个可在Linux上运行的文本编辑器,并具有集成的脚本引擎? 不破坏银行和跨平台将是伟大的。 编辑:虽然可录制的macros是伟大的,我更多地使用脚本引擎。

SCHED_OTHER / SCHED_FIFO的pthread sched_get_priority_min / max实现

我正在为我正在编写的一个项目编写一个半可移植的线程类,并且在设置线程的优先级时,遇到了pthread世界中的一个难题。 给出以下代码: #include <stdio.h> #include <unistd.h> #include <sched.h> main() { printf("Valid priority range for SCHED_OTHER: %d – %d\n", sched_get_priority_min(SCHED_OTHER), sched_get_priority_max(SCHED_OTHER)); printf("Valid priority range for SCHED_FIFO: %d – %d\n", sched_get_priority_min(SCHED_FIFO), sched_get_priority_max(SCHED_FIFO)); printf("Valid priority range for SCHED_RR: %d – %d\n", sched_get_priority_min(SCHED_RR), sched_get_priority_max(SCHED_RR)); } 在OpenBSD中,这将打印下面的内容: Valid priority range for SCHED_OTHER: 0 – 31 Valid priority range for SCHED_FIFO: […]