Delphi写的DLL在C++里怎样写函数的原型?

目前我是这样做的,但是会乱码.serialNum是要传出的,serialNum取出是乱码.DelphiDLL:functionGetNewSN(computerNum:P... 目前我是这样做的,但是会乱码.serialNum 是要传出的,serialNum取出是乱码.
Delphi DLL:
function GetNewSN(computerNum:PChar;serialNum:PChar):Integer;export; stdcall;

C++
typedef int (WINAPI * GetNewSN)(LPTSTR,LPTSTR);

调用:
GetNewSN pfGetNewSN=NULL;
int nResult;
LPTSTR lpComputerNo;
lpComputerNo=_T("01");
char* lpSN;
lpSN=new char[12];
HINSTANCE hinst=::LoadLibrary(_T("GenerateSN.dll"));
if(NULL!= hinst)
{
std::cout<<"Load library Completed ."<<std::endl;
pfGetNewSN=(GetNewSN)GetProcAddress(hinst,"GetNewSN");
if(NULL!=pfGetNewSN)
{
std::cout<<"Load Function Completed ."<<std::endl;
int rut=pfGetNewSN(lpComputerNo,lpSN);
//调用正常,lpSN乱码
switch(rut)
{
case cResultPass:
{
//开始写序号
std::cout<<"SN:"<<lpSN<<std::endl;
break;
}
default:
{
std::cout<<"Load Function Error ."<<std::endl;
//取得序号错误
}
}
}
}else
std::cout<<"Load library error !"<<std::endl;
FreeLibrary(hinst);
我已经搞定了. ^-^

改写C++代码.如下

typedef int (WINAPI* GetNewSN)(LPTSTR,char **);

....

char* lpSN=(char *)malloc(255);
....
int rut=pfGetNewSN(lpComputerNo,&lpSN);

.....
展开
 我来答
liu55721
2013-05-18 · TA获得超过922个赞
知道大有可为答主
回答量:1861
采纳率:100%
帮助的人:901万
展开全部
dll也就是一个可以被所有编程语言调用的函数,它的写法和函数是一模一样。你只要理解DELPHI DLL的功能,用C++写一个也不是什么难事的。DLL一般功能都比较简单,解决的最终问题的数量也很有限。当然洛,对于有窗体DLL就不能这样说了。
softwb
2013-05-18 · TA获得超过451个赞
知道小有建树答主
回答量:763
采纳率:0%
帮助的人:393万
展开全部
serialNum:PChar
在delphi有没申请内存
你的C代码没有问题。应该问题出在delphi那边。
追问
var
strSN:string;
....

strSN:='dgDSL88888888';
serialNum:=PChar(strSN);
result:=1;

我Delphi里是这样写的,可以吗?
追答
用strcopy
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式