C#调用C++dll 传出字符串
来源:互联网 发布:frobenius矩阵是什么 编辑:程序博客网 时间:2024/05/07 01:29
//C++ 函数返回字符串#include <iostream>#include <string>using namespace std;//错误const char* getStr1(){string s = "1";return s.c_str();}//正确string getStr2(){string s = "1";return s;}//正确const void getStr3(string &s){s = "1";}//正确const void getStr4(char** s){strcpy(*s ,"1");}int main(){const char* s1 = getStr1();cout<<s1<<endl;string s2 = getStr2();cout<<s2<<endl;string s3;getStr3(s3);cout<<s3<<endl;char* s4 = new char[10];getStr4(&s4);cout<<s4<<endl;return 0;}
结果:
.h文件
extern "C" _declspec(dllexport) int _stdcall GetFileID(char** ptrStr,unsigned char* data,int dataLen);.cpp文件
extern "C" _declspec(dllexport) int _stdcall GetFileID(char** ptrStr,unsigned char* data,int dataLen){int MAX_LEN_Data= 0;FileReq f;string str = "";if(CFileRequest::read(&f,data,dataLen)==0){MAX_LEN_Data = f.bufLen;str = f.fileID;strcpy(*ptrStr,(char*)str.c_str());CFileRequest::clear(f);}return MAX_LEN_Data;}C# .cs文件
[DllImport("CSocketBLL.dll")]public extern static int GetFileID(ref StringBuilder ptrStr, byte[] data, int dataLen);
ref StringBuilder与char**相对应
注:在调用strcpy(*ptrStr,(char*)str.c_str()); 之前,最好调用C#的代码,为*ptrStr重新开辟空间
0 0
- C#调用C++dll 传出字符串
- c# 调用 C++ dll 传入传出 字符串
- c# 调用 C++ dll 传入传出 字符串
- c# 调用 C++ dll 传入传出 字符串
- C#调用C++ DLL 传出字符串,C++ DLL传参问题
- C# 调用VC Dll (传出参数char*)
- C#调用C++DLL
- C#调用C++dll
- C#调用C++dll
- C#调用C++DLL
- c#调用c++DLL
- C# 调用C++dll
- C#调用C++DLL
- C#调用C++DLL
- C#调用C++DLL
- C#调用C++Dll
- C#调用C++DLL
- CE下,c#调用c++DLL字符串传递
- 社説 20150219 自衛隊海賊対処 司令官派遣は役割拡大の一歩
- 期末刷oj——复制字符串
- 社説 20150219 戦後70年談話 平和貢献の決意を発信したい
- Linux下配置Tomcat使用普通用户启动Daemon进程
- 二维背包问题
- C#调用C++dll 传出字符串
- 黑马程序员---从头开始,回忆JAVA基础之通信(一)
- 辛星浅析tty、pty与pts
- 开通博客,总结工作中遇到的问题。
- UVA - 10739 String to Palindrome
- 平板电视(pb_ds)应用
- 『HTML5梦幻之旅』 - 炫酷的节日贺卡
- MacBook使用攻略(程序员版)
- linux下的定位流