C#调用C++的dll时汉字出现乱码问题。。。。。

来源:百度知道 编辑:UC知道 时间:2024/05/24 20:40:56
用C++调用dll的代码如下所示:
#include "stdafx.h"
#include <stdio.h> /*系统头文件*/
#include <string.h> /*系统头文件*/
#include <stdio.h>
#include <wtypes.h>

int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE hDLL;

hDLL = LoadLibrary("invoiceprint.dll");

typedef int (__stdcall * MYAPP1)(char *,char *,char *,char *,char *);

MYAPP1 t2 ;

char *s1 = "IC卡号";
char *s2 = "客户名称";
char *s3 = "收费日期";
char *head = new char[100];
char *detail = new char[300];

t2=(MYAPP1)GetProcAddress(hDLL, "getInvoice");

int r2= t2(s1,s2,s3,head,detail);

std::cout<<"单据表头:"<< head<<std::endl;
std::cout<<"单据明细数:"<< r2<<std::endl;
std::cout<<"单据明细:"<< detail<<std::endl;
ret

乱码是啥形式的,比如在Unicode情况下,女对应PE.也叫变成乱码了,但是其实是解码方式不同,C++默认开发如果是用VS,那么就是GB2312的,你试一试C#。

你dll能用unicode重新编译么,然后c#也配上unicode应该就统一了