You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在仅支持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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:07:29