编译C ++源代码以在Windows应用商店应用中使用它们(Windows 8)

时间:2014-11-06 14:58:29

标签: c# c++ windows-8 windows-store-apps

首先,我几乎不了解C ++,所以请在这里忍受。

我正在构建一个使用C#/ XAML的Windows 8应用程序(为了与旧设备兼容,我不是以Windows 8.1为目标),而且我已经获得了客户端的来源。 C ++库(头文件和源文件,我的意思是)解密数据的专有格式。此库已在iOS版本的应用程序中使用。

根据这个question我明白我应该编译面向Windows运行时的C ++文件,然后使用P / Invoke来调用我需要的函数。我一直在研究并试图遵循几个指南但没有成功:例如thisthisthis。在最后一种情况下,即使我的系统中安装了VS 2012和2013,我也找不到cl.exe编译器。

那么,是否有一种虚拟安全的方法来编译外部C ++源代码以便在C#/ XAML Windows 8应用程序中使用它们?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我在VS中创建一个新项目,然后复制标题和源代码。您可以创建一个DLL项目来进行pinvoke,也可以创建一个Windows运行时组件来引用。后者通常更容易使用,但您需要定义要调用的接口。您应该在Visual Studio安装目录中的程序文​​件(x86)\ Microsoft Visual Studio 12.0 \ VC \ Bin \中安装cl.exe,但如果您不熟悉它,您可能会发现它更容易使用IDE。

Windows应用商店应用不使用C ++ / CLI,因此您不想转换为该应用。他们使用C ++的本机代码,而不是托管。如果使用C ++ / CX创建Windows运行时组件,则边界接口将需要是C ++ / CX,但内部都可以是标准C ++。 WRC将被投射到.Net中,因此它被称为来自C#的托管类。

文件句柄应该没问题(取决于文件句柄的含义)。如果您正在使用标准C ++类,那么您将可以访问几乎正常的C ++文件API集。您无法访问应用程序数据和安装目录之外的文件系统,但您可以在这些区域中使用C ++文件操作符。对于其他人,您需要使用StorageFile代理。