2012-09-07 45 views
0

我们为C#.NET和Apple iPad都有一个应用程序。此应用程序将执行类似的功能。为此,我们有一个协议层,我们正在考虑将其保留为通用代码。为此,我们正在考虑为协议模块创建一个C++ dll,以便它可以在C#和iPad上使用。创建一个C++的DLL,我有一个基本的问题:DLL项目应该是跨平台使用的类型

在创建一个DLL项目时,我们应该选择哪个选项?我们可以为MFC,Win32,ATL等创建一个dll。对我的需求来说,最好的选择是什么?

回答

1

您不应该使用MFC,因为这些Microsoft Foundation Classes在iOS上不可用。可能Win32是你最好的猜测 - 但是如果你想在非Windows环境下使用DLL,请确保不要包含任何非标准的Windows头文件。

我会建议在这两种环境下经常编译你的文件。如果您需要高级功能,您可能还想查看多平台库,如boost

+0

谢谢。我如何编译C#和Mac OS的代码?我需要保持同一个来源并执行此任务。这可能吗? – Vishy

+0

嗨,正如你已经表明你想把你的通用代码放在一个C++ DLL中。在开发这个DLL时,我认为你必须使用XCode来检查iOS兼容性和另一个IDE(例如eclipse,Visual Studio)来为Windows构建。您的DLL将公开可以从Objective-C使用并且必须为C#打包的函数。对于包装考虑使用SWIG或自己做。 – Tarnschaf

1

我推荐在Windows和iOS上查看Mono来构建C#应用程序。

如果您想要定位iPad,则需要为iOS构建而不是Mac OS。

您不能为iOS创建动态链接库,只能建立静态库。请注意,在iOS上有与DLL类似的东西,但是只有Apple可以构建它们(或者如果您的iPad已越狱,您可以自己构建它们,但这会使应用程序不符合AppStore的要求)。

iOS与Windows无关,因此Win32库不会在iOS上运行。您的通用“协议模块”(如果您的意思是可以通过TCP/IP或类似方式连接到其他设备的低级代码)需要根据运行的平台而有显着差异。