在delphi中调用C++ DLL文件,程序进程都启动不起来,单步调试的话按f7无数次还能起来,估计是参数传递的问题,delphi中的变量类型和C++中不兼容吧,源码:
delphi中建立一个单元,静态引入dll文件:
//--------------------------
interface
uses Sysutils;
function Login(username :PChar; password:PChar) : longint; stdcall;
implementation
function Login;external 'GLSMAPI.dll' name 'Login';
end.
//-----------------------------------
c++中dll文件定义:
/*
**功能描述: 向服务器提交用户登录请求
**返回值 : long
**参 数 : LPCTSTR lpszUser 用户名
**参 数 : LPCTSTR lpszPassword 用户口令
*/
long Login(LPCTSTR lpszUser,LPCTSTR lpszPassword);LPCTSTR 就是c++中的char*类型,对应delphi中Pchar类型
//-------------------------------
在delphi中使用login函数:
procedure TFormMain.Button1Click(Sender: TObject);
var
strBuf : array[0..25]of char;
P1,p2:PChar;
str1,str2: string;
begin
str1 := 'alex';
str2 := 'temp'; Login(PChar(str1),PChar(str2),);//
end;
以上文件编译能通过,但是进程起不来,如果注销掉Login函数,就能起来了
多谢!
delphi中建立一个单元,静态引入dll文件:
//--------------------------
interface
uses Sysutils;
function Login(username :PChar; password:PChar) : longint; stdcall;
implementation
function Login;external 'GLSMAPI.dll' name 'Login';
end.
//-----------------------------------
c++中dll文件定义:
/*
**功能描述: 向服务器提交用户登录请求
**返回值 : long
**参 数 : LPCTSTR lpszUser 用户名
**参 数 : LPCTSTR lpszPassword 用户口令
*/
long Login(LPCTSTR lpszUser,LPCTSTR lpszPassword);LPCTSTR 就是c++中的char*类型,对应delphi中Pchar类型
//-------------------------------
在delphi中使用login函数:
procedure TFormMain.Button1Click(Sender: TObject);
var
strBuf : array[0..25]of char;
P1,p2:PChar;
str1,str2: string;
begin
str1 := 'alex';
str2 := 'temp'; Login(PChar(str1),PChar(str2),);//
end;
以上文件编译能通过,但是进程起不来,如果注销掉Login函数,就能起来了
多谢!
解决方案 »
- PInt(@@a)^ 的问题
- EmbeddedWB高手进,如何为webbrowser设置代理服务器,100分求解!结贴快
- 请问 Tfylabel 这个是哪个控件系列!
- 怎样把string 类型的数据存到文件中阿?我用length的不到长度,因为是一个文件的二进制码。
- 用TADOStoredProc执行存储过程出错
- 各位大哥救命啊!TDBGridEh表格问题!
- 讨论:CSDN为何人气渐衰?
- 急呀!再线关注请问 有谁用过TmxOutlookBarPro控件请来看看 !
- 如何声明与使用动态二维数组?数组内存放string类型。
- 哪里可以找到delphi的函数原型??回者高分伺侯!!!!!!!!
- 急!请各位不吝赐教一个关于在delphi程序中执行数据库存储过程的问题
- 要用DELPHI开发ERP,请教买本什么书好
function Login(username :PChar; password:PChar) : longint; stdcall;
是不是应该改成
function Login( var username :PChar; var password:PChar) : longint; stdcall;
但是还是不行!!!
long WINAPI Login(LPCTSTR lpszUser,LPCTSTR lpszPassword);
extern "C"
{
long __cdecl Login(LPCTSTR lpszUser,LPCTSTR lpszPassword);
}或者
function Login(username, password: PChar) : longint; stdcall;在 VC 中加
extern "C"
{
long __stdcall Login(LPCTSTR lpszUser,LPCTSTR lpszPassword);
}
类似如下就可以了:
函数原型:extern "C"
int FAR PASCAL EXPORT Add(int a,int b);
谢谢大家!每日进步啊!