C# vs2022 + .NET Framework 4.6.1 + ABB 离线接口开发库 封装为动态库DLL文件,并由C++项目引用

一、环境说明

        开发环境:vs2022、.NET Framework 4.6.1、ABB离线接口库、vs2013

        开发语言:C#、C++

二、实现意义

        官方提供的ABB离线接口开发库由C#语言编写,但在实际项目中需要被C++项目调用。所以首先生成C#动态库,然后使用C++项目引用该动态库。

三、操作流程

         1.新建C#  类库(.NET Framework)项目

        2.打开新建项目属性,修改目标平台与C++项目平台一致(Debug/Release)与(x64/x86)        注意!勾选“为COM互操作注册”

        3.将测试有效的C#源码复制到新建项目.cs文件内,正常配置ABB官方库及第三方库(配置方式参考上一篇博客),以管理员身份运行VS2022下的该项目,点击生成解决方案即可生成DLL动态库文件,输出路径位于与目标平台对应的文件路径下。

        4.打开C++项目(本文环境为VS2013),项目属性—>配置属性—>常规

        公共语言运行时支持 选择 “公共语言运行时支持(/clr)”

        5.将前文封装好的动态库文件与其引用的第三方库文件,一同复制并添加至C++项目引用中。

        其中ABB_api_dll.dll、ABB_api_dll.pdb、ABB_api_dll.tlb为上文生成的动态库;RobotStudio.Services.RobApi.dll、RobotStudio.Services.RobApi.Desktop.dll、ABB.Robotics.Controllers.PC.dll、ABB.Robotics.Controllers.PC.xml为ABB官方提供接口库;ABB_dlltest为C++项目名。不要忘记在源码目录和运行目录下都要复制一遍。

        6.C++项目引用C#库时需要注意的差异:

        (1)动态库文件需要在引用文件中使用 #using 进行引入,不能使用 #include;不要忘记引入命名空间。

#using "ABB_api_dll.dll"
#using "ABB.Robotics.Controllers.PC.dll"

using namespace ABB_api_dll;
using namespace System;

        (2)C# 库生成对象指针时用 ^,代替C++使用的 *;使用gcnew 代替C++使用的 new 生成对象

ABB_api ^api = gcnew ABB_api();

       (3) C++与C#中的String类型是两种不同的数据类型,需要针对性转换。

四、部分代码示例

void ABB_dlltest::start()
{
	std::cout << "程序启动" << std::endl;
	
    // C++调用C#库时特殊的new方式
    ABB_api ^api = gcnew ABB_api();
    
    // 读取机器人控制系统名称
	string NamePath = ".\\release\\SystemName.txt";
	ifstream inFile(NamePath, ios::in | ios::binary);
	if (!inFile) {
		cout << "error" << endl;
	}
	char c[40];
	inFile.getline(c, 40);

    // C++与C#间不同String类型的转化
	string strc = std::string(c);
	inFile.close();
	System::String^ systemName = gcnew String(strc.c_str());

    // 调用离线功能接口
	api->Api_Scan(systemName);
	api->Api_MotorOn();
	api->Api_PointerReset();
	api->Api_StartAll();
	Sleep(6000);
	api->Api_StopAll();
	api->Api_MotorOff();

	std::cout << "运行完成,程序结束" << std::endl;
}

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: .NET Framework 4.6.1是微软开发的一个应用程序框架,它提供了一系列的API和工具,用于开发和运行Windows应用程序、Web应用程序和服务。它是.NET Framework的一个更新版本,包含了许多新的功能和改进,如性能优化、安全性增强、新的API等等。它可以在Windows 7 SP1及以上版本的操作系统上安装和运行。 ### 回答2: .NET Framework是微软开发的一种应用程序框架,用于开发和运行在Windows操作系统上的应用程序。.NET Framework 4.6.1是.NET Framework的一个版本,它是在2015年推出的,并且是.NET Framework 4的更新版本。 .NET Framework 4.6.1在功能和性能方面进行了一些改进。它提供了一些新的特性和功能,可以帮助开发人员更高效地开发应用程序。其中一些改进包括: 1. 改进了性能和稳定性。.NET Framework 4.6.1改进了GC性能,提供了更好的内存管理和垃圾回收策略,使得应用程序的性能更好。 2. 引入了一些新的类和API。.NET Framework 4.6.1引入了一些新的类和API,扩展了应用程序的功能,例如新的加密算法、新的网络类等。 3. 改进了Windows Presentation Foundation(WPF)和Windows Communication Foundation(WCF)。.NET Framework 4.6.1提供了一些针对WPF和WCF的改进,包括更好的UI体验和更高效的网络通信。 4. 引入了新的语言特性。.NET Framework 4.6.1引入了一些新的语言特性,例如自动属性初始值设置、异常筛选器、using静态导入等,这些特性可以使开发人员编写更简洁和可读性更高的代码。 总之,.NET Framework 4.6.1是.NET Framework的一个更新版本,它提供了一些功能和性能的改进,可以帮助开发人员更高效地开发应用程序。无论是新项目还是现有项目的升级,使用.NET Framework 4.6.1都能够获得更好的开发体验和更高的应用程序性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值