有哪位大神了解 C#和 C++互操作、数据封送的。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
windplume
V2EX    问与答

有哪位大神了解 C#和 C++互操作、数据封送的。

  •  
  •   windplume 2021-05-11 15:49:39 +08:00 2077 次点击
    这是一个创建于 1617 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我现在手上有份 C++的非托管 DLL 和 C++接口文档,我想用 C#调用非托管库导出的函数,但是我只懂 C#不懂 C++,好多数据类型不知道怎么转,我去看了下微软的官方文档,结果看得我血压都高了。我想问下不懂 C++的话 C#是不是就写不出来了。
    11 条回复    2021-05-11 21:41:24 +08:00
    ysc3839
        1
    ysc3839  
       2021-05-11 15:58:33 +08:00 via Android
    发出来看看吧
    thfurior
        2
    thfurior  
       2021-05-11 16:07:43 +08:00
    到网上搜常用类型的 c++ - c#转换,除了指针和结构体麻烦点,其他还好
    wctml
        3
    wctml  
       2021-05-11 16:22:13 +08:00
    dll 一般都是导出纯 C 的接口
    allen9527
        4
    allen9527  
       2021-05-11 16:25:52 +08:00
    我记得有个 pinvoke 的生成工具,把.h 文件黏进去就可以生成 C#代码了。当然一些参数什么的自己还是要调整下,比如碰到传送字符串的时候。不熟悉的话可能还有些弯路,多问问 google 之类的。。。
    Vinty
        5
    Vinty  
       2021-05-11 16:33:31 +08:00
    可以试试 swig 编译一个 c#接口
    AdamMaggie
        6
    AdamMaggie  
       2021-05-11 16:36:11 +08:00
    github.com/mono/CppSharp
    可以将非托管 C++,用 C++/CLI 或者 C# 生成一个托管类
    elmagnificogg
        7
    elmagnificogg      2021-05-11 19:35:00 +08:00 via Android
    网上资料比较少,微软自己写的转换例子太少了,有些情况都没写。我刚把一个 c++库转到 clr,然后给 c#调,有问题可以问,主要是数据封装类型转换的问题
    Mithril
        8
    Mithril  
       2021-05-11 20:16:00 +08:00
    写个 C++的头文件,然后 SWIG 一把梭。
    ch2
        9
    ch2  
       2021-05-11 20:52:33 +08:00
    你不会 C++肯定搞定不了,不过 C#已经算是调用 C++最简单的了
    killergun
        10
    killergun  
       2021-05-11 21:19:57 +08:00
    微软专门有个自己的 C++/CLI Wrapper,可以直接建该 C++ wrapper 项目 [在这里面调用你的 C++dll] ,你会发现 C#项目能直接引用该项目,跟 C# 本身项目没什么太大区别 。
    wzzzx
        11
    wzzzx  
       2021-05-11 21:41:24 +08:00
    非托管的话,你需要自己自己用托管 C++包一层,这样会好一点。托管 C++除了一点例外,其他的跟 C#一样写就好。非托管 C++因为名称修饰的原因,C#没法直接使用
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5410 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 07:45 PVG 15:45 LAX 00:45 JFK 03:45
    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