C#调用C++的dll时汉字出现乱码问题。。。。。
用C++调用dll的代码如下所示:#include"stdafx.h"#include<stdio.h>/*系统头文件*/#include<string.h>/*系统头文...
用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;
return 0;
请高手帮忙写成C#的代码。。。。。小弟感激不尽。。。。。。。
是控制台来的
C#代码如下所示,运行后出现的是乱码……
请高手们指点一下,或者给个正确的C#代码我。(试过了Unicode和Ansi都不行)
using System.Runtime.InteropServices;
[DllImport("invoiceprint.dll" ,ExactSpelling = false, CharSet = CharSet.Unicode)]
private unsafe static extern int getInvoice(string str1,string str2,string str3,byte* head,byte* detail);
unsafe static int Main(string[] args)
{
string str1 ="IC卡号";
string str2 ="客户名称";
string str3 ="收费日期";
byte* head = stackalloc byte[100];
byte* detail = stackalloc byte[300];
int r=getInvoice(str1, str2, str3,head,detail);
Console.WriteLine("明细表数为:{0}",r);
Console.Write("单据表头为:");
for (int i = 0; i < 100; i++)
{
Console.Write("{0}", head[i]);
}
Console.ReadLine();
return 0;
不行阿,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;
return 0;
请高手帮忙写成C#的代码。。。。。小弟感激不尽。。。。。。。
是控制台来的
C#代码如下所示,运行后出现的是乱码……
请高手们指点一下,或者给个正确的C#代码我。(试过了Unicode和Ansi都不行)
using System.Runtime.InteropServices;
[DllImport("invoiceprint.dll" ,ExactSpelling = false, CharSet = CharSet.Unicode)]
private unsafe static extern int getInvoice(string str1,string str2,string str3,byte* head,byte* detail);
unsafe static int Main(string[] args)
{
string str1 ="IC卡号";
string str2 ="客户名称";
string str3 ="收费日期";
byte* head = stackalloc byte[100];
byte* detail = stackalloc byte[300];
int r=getInvoice(str1, str2, str3,head,detail);
Console.WriteLine("明细表数为:{0}",r);
Console.Write("单据表头为:");
for (int i = 0; i < 100; i++)
{
Console.Write("{0}", head[i]);
}
Console.ReadLine();
return 0;
不行阿,dll是第三方提供的,还有其他办法吗 展开
3个回答
优质机构答主
2021-04-08 · 百度认证:广东太平洋互联网信息服务有限公司官方账号,优质数码...
关注
展开全部
解压文件出现中文乱码怎么办解决办法
华为Mate50 Pro曲面旗舰手机
¥6799
苹果 AirPods Pro 2代
¥1699
索尼65英寸4K HDR专业游戏电视
¥7499
惠普战66五代15.6英寸轻薄本
¥4399
查
看
更
多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你dll能用unicode重新编译么,然后c#也配上unicode应该就统一了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询