如何将 visual c++ + Windows 窗体应用程序 打包 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
lskjdfgl
V2EX    程序员

如何将 visual c++ + Windows 窗体应用程序 打包

  •  
  •   lskjdfgl 2024-01-02 09:37:52 +08:00 2423 次点击
    这是一个创建于 650 天前的主题,其中的信息可能已经有所发展或是发生改变。
    程序是:visual c++ + Windows 窗体应用程序
    需求:在项目打包的时候将.net framework 的运行时信息一起打包
    期待:将程序复制到没有 .net framework 的电脑上也可以直接运行,不用先安装 .net framework, 似于 .Net Core 的独立发布。

    请问我该如何实现这样的功能
    第 1 条附言    2024-01-02 11:28:45 +08:00

    20240102112551

    18 条回复    2024-01-02 15:14:14 +08:00
    ShadowPower
        1
    ShadowPower  
       2024-01-02 09:40:38 +08:00
    静态链接
    编译选项/MT
    lskjdfgl
        2
    lskjdfgl  
    OP
       2024-01-02 10:04:28 +08:00
    @ShadowPower 好像不行,生成后还是只有一个 exe 没有其他的 dll ,在没有 .net framework 的系统上还是提示:

    若要运行此应用程序,您必须首先安装 .NET Framework 的以下版本之一:

    v4.0.30319
    ShadowPower
        3
    ShadowPower  
       2024-01-02 10:16:47 +08:00
    那是 C#程序吧……
    .NET Framework 4.0 的话,无解
    lonewolfakela
        4
    lonewolfakela  
       2024-01-02 10:40:01 +08:00
    visual c++ Windows 窗体应用程序运行时是不需要.net framework 的,你最好先研究清楚是不是搞错了啥……
    nuk
        5
    nuk  
       2024-01-02 10:47:38 +08:00
    publish 的时候自包含不行么
    tool2d
        6
    tool2d  
       2024-01-02 11:01:30 +08:00
    vc 似乎可以混合编程,就是一部分用 c#,另外一部分用 c++,对新手很容易搞混。

    如何可以的话,考虑让 gpt 把 c#代码转换成 c++,就可以用一楼的方法解决了。
    tsanie
        7
    tsanie  
       2024-01-02 11:07:05 +08:00
    或者可以选择.net core ,然后 publish 成 self-contained 的
    ysc3839
        8
    ysc3839  
       2024-01-02 11:13:32 +08:00 via Android
    你先截图看看是 C++还是 C#吧
    zsxzy
        9
    zsxzy  
       2024-01-02 11:19:42 +08:00
    nsis
    Cloutain
        10
    Cloutain  
       2024-01-02 11:20:04 +08:00
    VC 程序还是.NET 程序都搞不清?或者是 VC 程序引用了.NET 的库?
    lskjdfgl
        11
    lskjdfgl  
    OP
       2024-01-02 11:27:50 +08:00
    @lonewolfakela 项目有 vc++ 和 .net
    ![20240102112551]( https://i2.100024.xyz/2024/01/02/imq6i3.webp)
    lskjdfgl
        12
    lskjdfgl  
    OP
       2024-01-02 11:30:13 +08:00
    @ysc3839 @Cloutain 已追加截图
    @tsanie @nuk 不是新建的 c#项目不能使用 .net core 和 publish
    cnbatch
        13
    cnbatch  
       2024-01-02 13:30:34 +08:00
    混合编程?可能无解,纯 C# 可以主动更改引用的 .NET Framework DLL ,已经有人试过可行:
    https://www.yycoding.xyz/post/2023/9/21/publish-dotnet-windows-application-into-a-single-file-executables

    对于混合编程的话,那就复杂多了。可以尝试把调用到的 DLL 全部复制到程序当前目录,但我也不知道是否可行。
    tanranran
        14
    tanranran  
       2024-01-02 14:01:09 +08:00
    再写一个项目,用于检测是否安装了.net framework ,如果没安装则,释放.net framework 安装文件,如果安装了,则释放项目安装文件
    chinadch
        15
    chinadch  
       2024-01-02 14:14:53 +08:00 via iPhone
    nsis 创建安装程序,知乎上有流程
    hahiru
        16
    hahiru  
       2024-01-02 14:40:51 +08:00
    !安装必看.txt
    Golor
        17
    Golor  
       2024-01-02 14:56:25 +08:00
    可以用 InnoSetup 打包程序,在 iss 脚本中进行判断是否安装.net freamwork ,若没有安装则进行安装。
    lskjdfgl
        18
    lskjdfgl  
    OP
       2024-01-02 15:14:14 +08:00
    @tanranran @Golor 谢谢 使用了 vs2010 自带的 visual studio installer 实现了安装前先检查有没有.net framework 环境,没有的话,就先安装.net framework ,安装后再复制程序文件。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1295 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 17:14 PVG 01:14 LAX 10:14 JFK 13:14
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86