首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 类封装C#DLL时,COM组件字符串如何转换,为什么乱码了

2013-07-09 
C++ 类封装C#DLL时,COM组件字符串怎么转换,为什么乱码了帮忙看看,为什么最后返回的字符串是乱码?1、C#的dll

C++ 类封装C#DLL时,COM组件字符串怎么转换,为什么乱码了
帮忙看看,为什么最后返回的字符串是乱码?

1、C#的dll控件返回字string字符串,如:
public string name(string txt)
{
   string name = txt;
   if(name =="abc123")
   {
      return name;
   }
}

2、C++类COM组件再封装上面这个控件,最后打印出来是乱码,为什么啊???cpp文件内容如下:

// COMName_Bridge.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"
#include<iostream>
#include <string>
#include "comutil.h"
#include "COMName_Bridge.h"
#import"..\debug\COMName.tlb"
using namespace std;
using namespace System;
using namespace COMname;

char* CPPname(char* txt){
HRESULT com = CoInitialize(NULL);
COMnameIfcePtr comname(__uuidof(COMnameClass));
_bstr_t bstrresult = _bstr_t(comname->name(txt));
CoUninitialize();
return bstrresult;
}

正常情况下,bstrresult打印出来应该是abc123啊,为什么我的打印成乱码了?
COM组件的字符串转换有问题吗?该怎么写?
com组件?字符串转换?乱码
[解决办法]
BSTR

字符串那些事儿:BSTR-LPSTR-LPWSTR-CString-VARIANT-COleVariant-_variant_t-CComBSTR-_bstr_t
http://blog.csdn.net/pizi0475/archive/2010/03/04/5346708.aspx

热点排行