您现在的位置是:主页 > news > 用wordpress复制一个网站/如何推广品牌

用wordpress复制一个网站/如何推广品牌

admin2025/6/18 2:59:52news

简介用wordpress复制一个网站,如何推广品牌,南京哪家网络公司做网站优化好,做网站商铺模板Git 源码地址 C/CLI 托管C的托管与非托管字符串的相互转换【1】 C/CLI 托管C的数据类型介绍【2】 C/CLI 托管C的基本数据类型及函数【3】 C/CLI 托管C的数组介绍【4】 C/CLI 托管C之字符串封装【5】 C/CLI 托管C之enum枚举封装【6】 C/CLI 托管C之类、属性封装【7】 C/C…

用wordpress复制一个网站,如何推广品牌,南京哪家网络公司做网站优化好,做网站商铺模板Git 源码地址 C/CLI 托管C的托管与非托管字符串的相互转换【1】 C/CLI 托管C的数据类型介绍【2】 C/CLI 托管C的基本数据类型及函数【3】 C/CLI 托管C的数组介绍【4】 C/CLI 托管C之字符串封装【5】 C/CLI 托管C之enum枚举封装【6】 C/CLI 托管C之类、属性封装【7】 C/C…

Git 源码地址

 

C++/CLI 托管C++的托管与非托管字符串的相互转换【1】

C++/CLI 托管C++的数据类型介绍【2】

C++/CLI 托管C++的基本数据类型及函数【3】

C++/CLI 托管C++的数组介绍【4】

C++/CLI 托管C++之字符串封装【5】

C++/CLI 托管C++之enum枚举封装【6】

C++/CLI 托管C++之类、属性封装【7】

C++/CLI 托管C++之结构体封装【8】

C++/CLI 托管C++之结构体封装(内存对齐#pragma pack)【9】

C++/CLI 托管C++之联合体union封装【10】

C++/CLI 托管C++之导出注释【11】

C++/CLI signing snk文件强命名


【1】字符串作为输入参数

C++导出函数:

//1.1 字符串作为输入参数
EXPORTDLL_CLASS int Str_Output( WCHAR *pInStr )
{if (NULL == pInStr){return(-1);}wprintf(L"Str_Output %s\n", pInStr);return(0);
}

CLI类封装:

 /// <summary>/// 1 字符串测试类/// </summary>public ref class StrCls{public:/// <summary>/// 1.1 字符串作为输入参数/// </summary>/// <param name="pInStr">字符串</param>  /// <returns>成功返回0</returns> static Int32 StrOutput(String^ pInStr);       /// <summary>/// 1.2 字符串作为参数,需要进行修改返回/// </summary>/// <param name="pOutStr">字符串</param>  /// <returns>成功返回0</returns> static Int32 StrChange(String^ %pOutStr);        /// <summary>/// 1.3 字符串数组作为参数/// </summary>/// <param name="ppStr">字符串数组</param>  /// <returns>成功返回0</returns> static Int32 StrChangeArr(array<String^>^ %ppStr);};

CLI函数实现:

System::Int32 ExportCLI::StrCls::StrOutput( String^ pInStr )
{if (String::IsNullOrEmpty(pInStr)){return(-1);}WCHAR   *pStr = ManagedStr2UnmanagedUniStr(pInStr);HRESULT  hr   = Str_Output(pStr);//内存释放if (NULL != pStr){delete []pStr;pStr = NULL;}return(hr);
}

C#测试:

//1. 字符串测试类
string pInStr = "1.1";
StrCls.StrOutput(pInStr);

【2】字符串作为参数,需要返回修改

//1.2 字符串作为参数,需要进行修改返回
EXPORTDLL_CLASS int Str_Change( WCHAR *pOutStr)
{if (NULL == pOutStr){return(-1);}int len = wcslen(pOutStr);for (int ix=0; ix<len-1; ix++){pOutStr[ix] = 'a' + (ix) % 26;}pOutStr[len-1] = '\0\0';wprintf(L"Str_Change %s\n", pOutStr);return(0);
}

CLI函数实现:

System::Int32 ExportCLI::StrCls::StrChange( String^ %pOutStr )
{if (String::IsNullOrEmpty(pOutStr)){return(-1);}WCHAR   *pStr = ManagedStr2UnmanagedUniStr(pOutStr);HRESULT  hr   = Str_Change(pStr);pOutStr = UnmanagedStr2ManagedUniStr(pStr);//内存释放if (NULL != pStr){delete []pStr;pStr = NULL;}return(hr);
}

C#测试:

string pOutStr = "1.2";
StrCls.StrChange(ref pOutStr);

【3】字符串数组作为参数,需要返回修改

C++导出函数:

//1.3 字符串数组作为参数
EXPORTDLL_CLASS int Str_ChangeArr( WCHAR **ppStr, int len )
{if (NULL == ppStr){return(-1);}for (int ix=0; ix<len; ix++){if (NULL != ppStr[ix]){lstrcpyn(ppStr[ix], L"abc", wcslen(ppStr[ix]));}}wprintf(L"Str_ChangeArr \n");return(0);
}

CLI函数实现:

System::Int32 ExportCLI::StrCls::StrChangeArr( array<String^>^ %ppStr )
{if (ppStr == nullptr){return(-1);}int     len  = ppStr->Length; //数据元素的个数WCHAR   **pp = new WCHAR *[len];for (int ix=0; ix<len; ix++){pp[ix] = ManagedStr2UnmanagedUniStr(ppStr[ix]);}HRESULT  hr   = Str_ChangeArr(pp, len);for (int ix=0; ix<len; ix++){ppStr[ix] = UnmanagedStr2ManagedUniStr(pp[ix]);}//内存释放for (int ix=0; ix<len; ix++){delete [](pp[ix]);pp[ix] = NULL;}delete []pp;pp = NULL;return(hr);
}

C#测试:

string[] ppStr = new string[2] { "1.31.......", "1.32......." };
StrCls.StrChangeArr(ref ppStr);