使用C++调用C#的DLL

2023-11-15

SwfDotNet是C#编写的,作者的C#水平,真是令我佩服。这是个特别好的读写Swf文件的库。但是,我要用在C++项目中,怎么让C++调用C#的DLL呢。今天一上午都在琢磨这个问题,耽误了很多时间,原因是编译是出现:
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。
接着就是一大堆的0x01等等。自己做了个Sample,仔细分析发现还是自己没有搞清楚。正确的操作如下:
1 创建C# DLL,需要指定应用类型为“类库”,代码:
namespace CSLib
{
    public class Class1
    {
        private string name;

        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = "Your Name: " + value;
            }
        }
    }
}

2 C++客户程序,是个控制台应用,代码:
#using "../debug/CSLib.dll"
using namespace CSLib;

int _tmain(int argc, _TCHAR* argv[])
{
 Class1 ^c = gcnew Class1();

 c->Name = "zzj";

 printf("%s/n", c->Name);

 return 0;
}

3 几点要记住:
 1 使用#using引用C# DLL,而不是#include。我就是想当然的使用了后者,所以浪费了一上午的时间;
 2 别忘了using namespace CSLib;
 3 使用C++/clr语法,采用正确的访问托管对象,即:使用帽子'^',而不是星星'*'。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用C++调用C#的DLL 的相关文章

  • 通过 SocketCAN 进行 boost::asio

    我正在考虑利用升压阿西奥 http www boost org doc libs 1 49 0 doc html boost asio html从a读取数据套接字CAN http en wikipedia org wiki SocketCA
  • 如何在 DataColumn.Expression 中使用 IF/ELSE 或 CASE?

    我有一个包含 1 列的表 状态 我想添加另一列名为 Action 的列 其值如下 如果 Status Yes 则 Action Go 否则 Action Stop 我使用以下代码添加到 操作 列中 但它不起作用 myDataTable Co
  • 平滑滚动.net 表单

    您好 我正在 net 中使用表单 并且在运行时动态添加大量链接标签 我将这些链接标签添加到面板并将该面板添加到 winform 当链接标签的数量增加时 表单会显示一个自动滚动条 垂直 现在 当我使用自动滚动向下滚动时 表单在滚动时不会更新其
  • VS 程序在调试模式下崩溃,但在发布模式下不崩溃?

    我正在 VS 2012 中运行以下程序来尝试 Thrust 函数查找 include cuda runtime h include device launch parameters h include
  • 我如何在 C# .NET(win7 手机)中使用“DataContractJsonSerializer”读入“嵌套”Json 文件?

    我有一个问题 如果我的 json 文件看起来像这样 Numbers 45387 Words 空间桶 我可以很好地阅读它 但是如果它看起来像这样 Main Numbers 45387 Words 空间桶 某事 数字 12345 单词 克兰斯基
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • 时间:2019-03-17 标签:c#ThreadSafeDeepCopy

    我一直在阅读很多其他问题以及大量谷歌搜索 但我一直无法找到明确的解决方案 根据我读过的一些最佳实践 类的静态方法应该创建线程安全的 并且实例成员应该将线程安全留给消费者 我想为该类实现深度复制方法 该类本身还有其他引用类型成员 有没有什么方
  • vs2008 c#:Facebook.rest.api如何使用它来获取好友列表?

    如何在此基础上取得进一步的进步 获取好友列表的下一步是什么 string APIKey ConfigurationManager AppSettings API Key string APISecret ConfigurationManag
  • 为什么 set_symmetry_difference 无法与比较器一起使用?

    Example program include
  • std::forward_as_tuple 将参数传递给 2 个构造函数

    我想传递多个参数以便在函数内构造两个对象 以同样的方式std pair
  • 检查 RoutedEvent 是否有任何处理程序

    我有一个自定义 Button 类 当单击它时 打开特定窗口 它总是执行相同的操作 我添加了一个可以在按钮的 XAML 中分配的 Click 事件 就像常规按钮一样 当它被单击时 我想执行 Click 事件处理程序 如果已分配 否则我想执行默
  • 是否有相当于 Clang/LLVM 的 .spec 文件,在哪里可以找到参考?

    The gcc驱动程序可以配置为使用特定的链接器 特定的选项和其他细节 例如覆盖系统头 specs files 当前 截至撰写本文时 GCC 版本 4 9 0 的手册此处描述了规范文件 https gcc gnu org onlinedoc
  • C# 中的 strstr() 等效项

    我有两个byte 我想找到第二个的第一次出现byte 在第一个byte 或其中的一个范围 我不想使用字符串来提高效率 翻译第一个byte to a string会效率低下 基本上我相信就是这样strstr 在 C 中做 最好的方法是什么 这
  • 在 EnvDTE 中调试时捕获 VS 局部变量

    是否可以使用 EnvDTE 进行 vsix Visual Studio 扩展来捕获本地和调试窗口使用的调试数据 或者可以通过其他方法吗 我想创建一个自定义的本地窗口 我们可以修改它以根据需要显示一些较重的内容 而无需为高级用户牺牲原始的本地
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • IEnumerable.Except 不起作用,那么我该怎么办?

    我有一个 linq to sql 数据库 非常简单 我们有 3 个表 项目和用户 有一个名为 User Projects 的连接表将它们连接在一起 我已经有了一个获得的工作方法IEnumberable
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正

随机推荐

  • 重塑未来:AI对教育行业的深远影响与挑战

    自从AI人工智能的发展进入 iPhone时刻 以来 我们已身处一个日新月异的时代 在众多领域 AI已经大放异彩 而教育作为培养下一代的关键领域 自然也受到了这场科技革命的影响 AI对教育行业重大影响 最近可汗学院 Khan Academy
  • Python金融系列第四篇:置信区间和假设检验

    作者 chen h 微信号 QQ 862251340 微信公众号 coderpai 第一篇 计算股票回报率 均值和方差 第二篇 简单线性回归 第三篇 随机变量和分布 第四篇 置信区间和假设检验 第五篇 多元线性回归和残差分析 第六篇 现代投
  • 用chatgpt写论文可行吗,查重率会达到多少

    AI工具国内体验 关注 码视野 回复关键字 1002 选题 题目 物联网技术在智能家居系统中的应用研究 概要生成 问 请以 物联网技术在智能家居系统中的应用研究 为课题 写一篇物联网专业本科毕业论文的摘要 不少于400字 答 随着人们生活水
  • 单内核与微内核

    单内核是个很大的进程 它的内部又能够被分为若干模块 或是层次或其他 但是在运行的时候 他是个单独的二进制大映象 其模块间的通讯是通过直接调用其他模块中的函数实现的 而不是消息传递 在运行效率上 单内核会具有一定的好处 单内核结构是非常有吸引
  • 前端将后端返回的文件流转为excel并下载

    1 目的 将文件流转为excel并进行下载 下面图片是发请求之后 后端返回的文件流 想要实现的效果是将文件流转为excel并进行下载 2 实现步骤 2 1 utils exportFile js export function export
  • npm 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

    npm 无法将 npm 项识别为 cmdlet 函数 脚本文件或可运行程序的名称 请检查名称的拼写 如果包括路径 请确保路径正确 然后再试一次 目录 一 报错 二 解决 1 安装node js node js安装过程中的报错问题 解决nod
  • ThinkPHP5多语言切换项目实战

    ThinkPHP5多语言切换实战 1 在配置文件中开启多语言配置 2 然后添加多语言目录 这里创建你需要的语言包 在语言包里定义需要翻译的文本 中英文数组的键名写成一致 然后在html文件里输入 lang 键名 对应的键名 就是下图的写法
  • unity shader加载序列帧图片

    先设置序列帧图WarpMode 为Repeat Shader部分 Shader My Sequence Properties Opacity 透明度 range 0 1 0 5 Sequence 序列帧 2d gray RowCount 行
  • global clk 的 skew & jitter

    ku040 的 skew 同一个 clk 下的不同寄存器 clk 到达时间可能会差 300ps 跟 clk 走线的长度相关 一般同一个 bank内 clk 在 30ps 之内 但是不同的 clk 即使从同一个 mmcm pll 的不同管脚发
  • 【C语言的栈溢出问题以及部分解决】

    C语言的栈溢出问题 例如 针对学习过程中遇到的栈溢出问题 C语言的栈溢出问题 前言 栈溢出 Stack overflow 导致栈溢出的原因 函数递归层次太深 1 修改栈区空间大小 2 尾部递归优化 附一 设置优化选项 O1 O2 附二 解决
  • idea中 mybatis 的 mapper.xml 新建没有 头文件

    idea中 mybatis 的 mapper xml 新建没有 头文件 解决步骤 1 直接 settings 2 直接 选择 MybatisMapper 添加
  • C6678多核DSP开发——image_processing例程

    前言 这篇学习笔记记录了在DSP上实现简单图像处理算法的image processing例程 该例程在CCS安装时安装在目录下 主要实现了对图像的分割 灰度处理以及边缘检测 学会了调用和修改DSP例程以及图像处理基本程序框架 1 打开CCS
  • iOS 的 APP 在系统中如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸?

    iOS 的 APP 在系统中如何适应 iPhone 5s 6 6 Plus 三种屏幕的尺寸 iOS开发如何标准化的适应新的iPhone 5s iPhone6 6 Plus 是否有一种一劳永逸的解决方法 而不需要设计师针对不同的尺寸单独进行设
  • 基础算法题——炎炎消防队(取巧、三分)

    炎炎夏日 题目描述 夏天的重庆格外地炎热 很容易起火 消防士们都全副武装 一旦发生险情就立马赶往救火 森罗是消防队中的一员 他在灭火的过程中突发奇想 如果能用退火的原理求解函数求最小值 那不就可以很容易计算了吗 翌日 森罗来到即将高考的弟弟
  • Android中如何重新启动应用APP或重启系统

    重新启动应 程序 有两种 法 分别是 1 通过ActivityManager来重新启动应 程序 java 代码 ActivityManager manager ActivityManager this getSystemService Co
  • pm grant 命令

    CustomLocale apk所需要的权限 android permission CHANGE CONFIGURATION 自Android 4 2 4 2 2起系统定义为android protectionLevel signature
  • java学习笔记——众筹项目练习——前台系统的实名认证功能、ajax发送跨域请求、后台manager系统的实名认证人工审核

    实名认证功能 前面的文章中我们实现了后台manager系统中的流程管理功能 并且将实名认证的流程上传到了服务器并完成部署 不过 仅仅是长传和部署当然不是我们的目的啦 我们上传这个实名认证流程时为了可以让前台的广大用户可以使用这个流程 怎么才
  • C++ Primer 第五章 Statements

    C Primer 第五章 Statements 5 3 Conditional Statements 5 3 2 The switch Statement 5 4 Iterative Statements 5 4 3 Range for S
  • VScode 运行java出现exited with code=1 in 0.695 seconds的问题解决

    在运行vs中Java代码时 配置过程中可能会出现一些问题 导致运行结果为上述所示 在vs中运行Java代码时 首先要确保Java环境配置无误 出现下面的则证明配置成功 之后需要安装几个插件 最后就可以在vs中编写Java代码了
  • 使用C++调用C#的DLL

    SwfDotNet是C 编写的 作者的C 水平 真是令我佩服 这是个特别好的读写Swf文件的库 但是 我要用在C 项目中 怎么让C 调用C 的DLL呢 今天一上午都在琢磨这个问题 耽误了很多时间 原因是编译是出现 warning C4819