2022年用托管类库的方式在C#中使用C++编写的类推荐 .pdf
《2022年用托管类库的方式在C#中使用C++编写的类推荐 .pdf》由会员分享,可在线阅读,更多相关《2022年用托管类库的方式在C#中使用C++编写的类推荐 .pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、用托管类库的方式在C#中使用 C+编写的类(DLL 托管)转自:http:/ Windows 下的应用程序开发,VS.Net占据了绝大多数的份额。因此很多以前搞VC+开发的人都转向用更强大的VS.Net。在这种情况下,有很多开发人员就面临了如何在C#中使用 C+开发好的类的问题。下面就用一个完整的实例来详细说明怎样用托管C+封装一个C+类以提供给C#使用。比如,现在有一个工程名为NativeCppDll 的由 C+编写的 DLL,里面输出了一个CPerson类。下面是具体的代码:/NativeCppDll.h#pragma once#ifndef LX_DLL_CLASS_EXPORTS#de
2、fine LX_DLL_CLASS _declspec(dllexport)#else#define LX_DLL_CLASS _declspec(dllimport)#endif class LX_DLL_CLASS CPerson public:CPerson();CPerson(const wchar_t*pName,const wchar_t cSex,int iAge);void SetName(const wchar_t*pName);wchar_t*GetName();void SetSex(const wchar_t cSex);wchar_t GetSex();void Se
3、tAge(int iAge);int GetAge();wchar_t*GetLastError();private:wchar_t m_szName128;wchar_t m_cSex;int m_iAge;wchar_t m_szLastError128;void ShowError();/NativeCppDll.cpp#include stdafx.h#include NativeCppDll.h#include#include 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 6 页 -using namespace std;CPerson:CPerson()wcscpy
4、_s(m_szName,_T(No Name);m_cSex=N;m_iAge=0;wcscpy_s(m_szLastError,_T(No Error);CPerson:CPerson(const wchar_t*pName,const wchar_t cSex,int iAge)wcscpy_s(m_szLastError,_T(No Error);SetName(pName);SetSex(cSex);SetAge(iAge);void CPerson:SetName(const wchar_t*pName)if(pName=NULL)|(wcslen(pName)=0)|(wcslen
5、(pName)127)wcscpy_s(m_szName,_T(No Name);wcscpy_s(m_szLastError,_T(The length of the input name is out of range.);ShowError();return;wcscpy_s(m_szName,pName);wchar_t*CPerson:GetName()return m_szName;void CPerson:SetSex(const wchar_t cSex)if(cSex!=F)&(cSex!=M)&(cSex!=m)&(cSex!=f)m_cSex=N;wcscpy_s(m_s
6、zLastError,_T(The input sex is out of F/M.);ShowError();return;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 6 页 -m_cSex=cSex;wchar_t CPerson:GetSex()return m_cSex;void CPerson:SetAge(int iAge)if(iAge 150)m_iAge=0;wcscpy_s(m_szLastError,_T(The input age is out of range.);ShowError();return;m_iAge=iAge;int CPerson:
7、GetAge()return m_iAge;wchar_t*CPerson:GetLastError()return m_szLastError;void CPerson:ShowError()cerr m_szLastError endl;这是一个很典型的由C+开发的 DLL,输出一个完整的C+类。如果现在要求开发一个C#工程,需要用到这个DLL中输出的C+类 CPerson,该怎么办呢?针对这个例子来说,类 CPerson非常小,可以用C#重新写一个跟这个C+类一样的类。可是,如果需要的C+类很大,或者很多的时候,重写工程将非常庞大。而且这样没有对现有的代码进行重用,浪费了现有资源,开发起
8、来费时费力。当然,还是有方法解决这个问题的。那就是用托管C+将 C+类给封装一下,然后再提供给C#来使用。下面就用代码来详细说明怎样用托管C+来封装上面的那个 C+类。首先,要创建一个托管C+的 DLL工程 ManageCppDll,然后在里面添加下面的代码:/ManageCppDll.h#pragma once 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 6 页 -#define LX_DLL_CLASS_EXPORTS#include.NativeCppDllNativeCppDll.h using namespace System;namespace ManageCpp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年用托管类库的方式在C#中使用C+编写的类推荐 2022 托管 方式 C# 使用 C+ 编写 类推
限制150内