如何在仅支持C#/C++/JS的VS2017中用C语言创建UWP空白应用?
在Visual Studio 2017中用C语言创建UWP应用的方法
确实,VS2017没有直接提供纯C语言的UWP项目模板——UWP的官方一级支持是C#、C++/CX和JavaScript。不过别担心,我们可以通过C++ UWP项目来兼容C代码(毕竟C++本身兼容C标准),下面是两种可行的方案:
方案一:在C++ UWP空白应用中嵌入C代码
这是最简单直接的方式,适合快速把现有C代码集成到UWP项目里:
- 打开VS2017,创建一个**空白应用(Universal Windows)**项目,语言选择C++,按向导完成项目创建。
- 右键项目→添加→新建项,选择“C文件(.c)”,命名后添加到项目中(比如
my_c_logic.c)。 - 配置C文件的编译属性:右键这个C文件→属性→配置属性→C/C++→高级,把“编译为”选项改成编译为C代码(/TC)。如果有对应的C头文件(比如
my_c_logic.h),也建议同样设置这个属性,确保编译器以C标准处理它。 - 在C++的UWP代码中调用C函数:比如在
MainPage.xaml.cpp里,用extern "C"块包含C头文件,这样就能调用C代码里的函数了:extern "C" { #include "my_c_logic.h" } // 示例:在UWP页面方法中调用C函数 void MainPage::Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) { int result = my_c_calculation(10); // 调用你的C函数 // 把结果展示到UWP界面上 MyTextBlock->Text = "C代码计算结果:" + result.ToString(); }
方案二:封装C代码为Windows Runtime组件
如果想把C代码做成可复用的UWP组件(甚至供C#/JS的UWP项目调用),可以用这个方法:
- 创建一个**Windows Runtime Component(Universal Windows)**项目,语言选C++。
- 同样添加C文件和头文件,设置编译为C代码(/TC)。
- 在C++的WinRT类中包装C函数,把C的逻辑暴露为符合WinRT规范的接口。比如:
// CCodeWrapper.h #pragma once #include "my_c_logic.h" namespace CCodeUwpComponent { public ref class CWrapper sealed { public: static int RunCCalculation(int input) { return my_c_calculation(input); // 调用C函数 } }; } - 编译这个组件后,就可以在其他UWP项目中引用它,直接调用封装好的方法。
注意事项
- UWP运行在沙箱环境中,你的C代码不能使用UWP不允许的Win32 API(比如传统的文件操作、进程创建API)。如果是纯计算类的C代码,基本没有限制;如果需要访问系统资源,要改用UWP提供的Windows Runtime API。
- 确保C代码遵循C标准(比如C99或C11,VS2017支持这些标准),避免和C++语法冲突。
内容的提问来源于stack exchange,提问作者Sajith
相关产品推荐
相关产品推荐

