btcq.net
当前位置:首页 >> DElphi如何调用C++写的Dll >>

DElphi如何调用C++写的Dll

静态引用法:procedure PipeOpen(lppipe:PipeStruct;szProcFile:PChar);stdcall;external ''; 动态引用法:var hDll:DWORD;//声明Dll句柄 PipeOpen:procedure(lppipe:pointer{PipeStruct};szProcFile:PChar);stdcall;//声明被调用过程 hDll:=

DLL中函数:我在DELPHI里如下写:Types of actual and formal of var parmeter must be identical.implementation{$R *.DFM}void MyFunc(char procname[],int result[],int points,int level);{Declare external function in the mydll.dll}procedure MyFunc

//这个首先要知道vc dll到导出函数及导出方式 ,你可以建立一个单元作为调用vc的dll的接口.比如:unit mylib;interfaceuses Windows, SysUtils; procedure dosum; stdcall; // vc中有这个过程implementationconst csDllName = 'vclib.dll'; //vc的动态库procedure dosum; external csDllName; //你可以在delphi中通过该函数调用动态库中的同名函数end.

小弟主要是不明白系统调用方式的声明,在C++ BUILDER中做的TEST.DLL定义了这样一个函数:extern "C" __declspec(dllexport) int AddNum(int x,int y);在DELPHI中用function AddNum(x:intger; y:integer):integer; stdcall external "TEST.

你传的参数类型是正确的.原因1:参数需要分配内存,但是你没有.原因2:参数值有问题.检查下函数返回值.原因3:DLL本身写得有问题.可通过调试DLL分析原因.

你需要写一个Delphi版本的数据定义文件,就是把.h翻译成Delphi然后调用DLL里面的函数的时候才能把这个record类型的指针作为参数传递.你可以参照一下Delphi自带的Windows单元,那里面定义了很多Windows API中需要用的数据类型.

HANDLE -> Cardinalunsigned char -> Charunsigned char* ->PChar

VC++缺省的dll函数是 cdecl,在Delphi中声明是也要加 cdecl,我想你可能是用了stdcall,那么把stdcall改成cdecl,再试一试

假设vc中编写了函数int add(int a,int b),实现整数a、b相加,并生成在c:\lyh\123.dll文件中.清问各位Delphi高手,在Delphi中若何调用VC所写的DLL.能不克不及给点简单的事例代码?在delphi中若何写代码,应用add()函数?

在用VC编译DLL时,出了调用规则要一致以外,还要添加一个与DLL文件同名的.DEF文件格式内容参见MSDN支.def搜索,不然会产生入口点错误.

相关文档
qzgx.net | rtmj.net | rpct.net | 3859.net | fpbl.net | 网站首页 | 网站地图
All rights reserved Powered by www.btcq.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com