我以前编程窗口,但我想尝试制作跨平台应用程序.我有一些问题,如果你不介意:
问题1
有没有办法打开UNICODE\ASCII文件并使用裸ANSI C自动检测它的编码.MSDN说如果我将使用fopen()可以在各种UNICODE格式(utf-8,utf-16,UNICODE BI\LI)之间切换"ccs = UNICODE"标志.通过实验发现,从UNICODE切换到ASCII没有发生,但试图解决这个问题,我发现文本Unicode文件有一些前缀,如0xFFFE,0xFEFF或0xFEBB.
FILE *file;
{
__int16 isUni;
file = _tfopen(filename, _T("rb"));
fread(&(isUni),1,2,file);
fclose(file);
if( isUni == (__int16)0xFFFE || isUni == (__int16)0xFEFF || isUni == (__int16)0xFEBB)
file = _tfopen(filename, _T("r,ccs=UNICODE"));
else
file = _tfopen(filename, _T("r"));
}
Run Code Online (Sandbox Code Playgroud)
那么,我可以制作这样的跨平台而不是那么难看的东西吗?
问题2
我可以在Windows中做这样的事情,但它能在Linux下运行吗?
file = fopen(filename, "r");
fwscanf(file,"%lf",buffer);
Run Code Online (Sandbox Code Playgroud)
如果没有,那么是否有某种ANSI C函数将ASCII字符串转换为Unicode?我想在我的程序中使用Unicode字符串.
问题3
此外,我需要将Unicode字符串输出到控制台.在windows中有setlocale(*),但我应该在Linux中做什么?似乎控制台已经是Unicode了.
问题4
一般来说,我想在我的程序中使用Unicode,但是我遇到了一些奇怪的问题:
f = fopen("inc.txt","rt");
fwprintf(f,L"?????"); // converted successfully
fclose(f);
f = fopen("inc_u8.txt","rt, ccs = UNICODE");
fprintf(f,"text"); // failed to convert
fclose(f);
Run Code Online (Sandbox Code Playgroud)
PS有没有关于跨平台编程的好书,有什么比较windows和linux程序代码?还有一些关于使用Unicode的方法,实用方法,即.我不想沉浸在简单的UNICODE BI\LI历史中,我对特定的C/C++库感兴趣.
我是编程的新手,我正在考虑使用C#编写一个非常简单的程序,只需编辑一个文本文件.
我替换了所有图像到处(我的意思是在drawable文件夹和所有Windows资源文件夹和iOS资源文件夹中),但它仍然显示应用程序的默认Xamarin图标.我也试过这个代码,但它似乎也没有用.有人能告诉我解决方案吗?
[assembly: Application(Icon = "@drawable/icon")]
Run Code Online (Sandbox Code Playgroud) 我不是在寻找像Web服务这样的常见答案.我正在寻找一种在同一台机器上运行的轻型解决方案.
编辑:我正在寻找Java中调用.NET方法的方法
我已经了解了CMake和bakefile,但这不是我想要的.
是否有一个工具可以在给定VC项目的情况下生成makefile?(或至少第一次尝试一次)所以我不必手工完成所有工作?
或者,是否有一个制作CMake文件的工具?
点击下面的链接告诉我:
这是一个很大的帮助.我还没有尝试过.
任何人都可以推荐提供ac/c ++ API的便携式SIMD库,适用于Intel和AMD扩展以及兼容GCC的Visual Studio.我希望加快缩放512x512双打阵列的速度.矢量点积,矩阵乘法等
到目前为止,我找到的唯一一个是:http: //simdx86.sourceforge.net/但是第一页说它不能在visual studio上编译.
还有英特尔IPP,这对我收集的AMD不起作用.还有来自AMD的Framewave,但我在编译和链接他们的库时遇到了一些问题,他们的论坛已经完全死了.有人设法在任何地方使用Framewave吗?
谢谢.
我正在尝试将一些Windows代码移植到Linux,理想情况是通过独立于平台的库(例如boost),但是我不知道如何移植这些事件代码.
代码位涉及两个线程(让我们称之为A和B).A想要做只有B可以做的事情,所以它向B发送消息,然后等待B说出它完成了.在Windows中,这看起来像:
void foo();//thread a calls this
void bar(HANDLE evt);
void foo()
{
HANDLE evt = CreateEvent(0,FALSE,FALSE,0);
bCall(boost::bind(&bar, evt));
WaitForSingleObject(evt,INFINITE);
CloseHandle(evt);
}
void bar(HANDLE evt)
{
doSomething();
SetEvent(evt);
}
Run Code Online (Sandbox Code Playgroud)
我查看了boost :: thread库,但它似乎没有任何东西可以做到这一点,我可以看到的关闭是boost :: condition_variable,但看起来这意味着与一个互斥量一起使用,但事实并非如此这里.
经过一段时间后主要是.net开发,我需要以跨平台的方式在c ++中工作.
我不想放弃visual studio,所以我希望可以使用visual studio和windows target作为testbuild,然后每隔一段时间通过vm测试linux或mac上的代码.
有没有人有如何最好地设置它的经验?
我特别好奇你如何确保像项目文件这样的东西与*nix平台上可能需要的make文件保持同步.
我一直致力于基于SWT的项目,该项目旨在部署为Java Web Start,因此可以在多个平台上使用.
到目前为止,我已设法解决由于SWT所依赖的系统特定库所引起的导出问题(参见相关主题).生成的jar似乎可以在32/64位linux和64位窗口上正常工作,但是在具有以下输出的Mac上执行失败:
$ java -jar dist/test.jar
Adding { file:/Volumes/LaCie/ChiBE_Local/swt/swt-cocoa-macosx-x86_64-3.6.1.jar } to the classpath
***WARNING: Display must be created on main thread due to Cocoa restrictions.
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.ExceptionInInitializerError
at org.eclipse.gef.tools.MarqueeSelectionTool.<init>(MarqueeSelectionTool.java:99)
at org.gvt.MarqueeZoomTool.<init>(MarqueeZoomTool.java:16)
at org.gvt.action.MarqueeZoomToolAction$1.<init>(MarqueeZoomToolAction.java:28)
at org.gvt.action.MarqueeZoomToolAction.createTool(MarqueeZoomToolAction.java:28)
at org.gvt.action.AbstractGEFToolAction.<init>(AbstractGEFToolAction.java:24)
at org.gvt.action.MarqueeZoomToolAction.<init>(MarqueeZoomToolAction.java:20)
at org.gvt.TopMenuBar.createBarMenu(TopMenuBar.java:113)
at org.gvt.ChisioMain.createMenuManager(ChisioMain.java:617)
at org.eclipse.jface.window.ApplicationWindow.addMenuBar(ApplicationWindow.java:235)
at org.gvt.ChisioMain.main(ChisioMain.java:149)
at org.gvt.RuntimeMain.main(RuntimeMain.java:14)
... 5 more
Caused by: org.eclipse.swt.SWTException: Invalid thread access
at …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个可以在Windows和Linux上运行的C/C++库,它允许我以不同的方式查询多个web服务器(每分钟1000个)页面标题和下载网页,就像WinHttp库在Windows环境中一样.
到目前为止,我遇到了libCurl,它似乎做了我想要的,但是异步方面看起来很可疑.
您认为绕过使用库的想法并根据可实现此目的的套接字从头开始编写简单的东西是多么容易?
任何意见,建议或建议都会受到欢迎.
附录: - 任何机构都有关于使用libCurl进行此操作的评论,我说同步方面可能看起来很可疑,但有没有人有任何经验呢?
cross-platform ×10
c++ ×5
c ×2
c# ×2
java ×2
windows ×2
.net ×1
ansi-c ×1
asynchronous ×1
boost ×1
console ×1
http ×1
macos ×1
makefile ×1
open-source ×1
simd ×1
swt ×1
unicode ×1
unix ×1
visual-c++ ×1