导航
  • 主页
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

delphi调用 dll 的问题

sanguang 2004-06-17 10:52:11
本人为初学者 学习中遇到一个问题 特来请求各位帮助

拿到一个 dll 文件 只有 bcb 的调用方法 我想在delphi 中调用
dll: Key.dll
bcb 调用方法 在项目中包含 Key_import.h Key_import.cpp
——-----------------------------------------------------------
Key_import.h 内容:
#ifndef KEY_IMPORT_H
#define KEY_IMPORT_H

enum { KS_SAMPLE_RATE, KS_CHANNELS, KS_ANTI_ALIAS, KS_SHIFT_KEY };

typedef HKEY;

typedef __declspec(dllimport) HKEY (__stdcall *IKey_Create)();
typedef __declspec(dllimport) void (__stdcall *IKey_Set)(HKEY ksHandle, int property, int value);
typedef __declspec(dllimport) void (__stdcall *IKey_PutSamples)(HKEY ksHandle, short int * data, int dataSize );
typedef __declspec(dllimport) int (__stdcall *IKey_GetSamples)(HKEY ksHandle, short int * data, int maxSize, int * inSize );

extern IKey_Create Key_Create;
extern IKey_Set Key_Set;
extern IKey_PutSamples Key_PutSamples;
extern IKey_GetSamples Key_GetSamples;

int InitKeyLib();

#endif
——-----------------------------------------------------------
Key_import.cpp 内容


#include "Windows.h"
#include "Key_import.h"

IKey_Create Key_Create;
IKey_Set Key_Set;
IKey_PutSamples Key_PutSamples;
IKey_GetSamples Key_GetSamples;

int InitKeyLib()
{
HINSTANCE KeyLibDll;
KeyLibDll = LoadLibrary( "Key.dll" );

if (KeyLibDll == NULL)
return -1;

Key_Create = (IKey_Create)GetProcAddress( KeyLibDll, "Key_Create" );
Key_Set = (IKey_Set)GetProcAddress( KeyLibDll, "Key_Set" );
Key_PutSamples = (IKey_PutSamples)GetProcAddress( KeyLibDll, "Key_PutSamples" );
Key_GetSamples = (IKey_GetSamples)GetProcAddress( KeyLibDll, "Key_GetSamples" );

if ((!Key_Create) || (!Key_Set) || (!Key_PutSamples) || (!Key_GetSamples))
return 0;

return 1;
}
——-----------------------------------------------------------
期望各位大佬能够帮忙把这俩引用文件转为.pas 我在这里先谢过了
...全文
237 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanguang 2004-06-18
谢谢诸位老大 我这就试试去

还有 typedef HKEY; 这一句 中的HKEY

该如何在 pas 中定义?
回复
sanguang 2004-06-18
都不满意 算了 结贴吧
回复
蓝色光芒 2004-06-18
Function : Key_Create():HKEY; external 'key.dll' name 'Key_Create';
Function : Key_Set(ksKey:HKEY;Property:integer;Value:integer):DWORD; external 'key.dll' name 'Key_Set';

Function : Key_PutSamples(ksKey:HWND;
var data:ShorInt;//这里弄不实在
DataSize:integer):Dword; external 'key.dll' name 'Key_PutSamples';
Function : Key_GetSamples(ksKey:HWND;
var data:ShorInt;
MaxSize:integer;
var inSize:integer):Dword; external 'key.dll' name 'Key_GetSamples';
回复
jpyc 2004-06-18
http://community.csdn.net/Expert/TopicView1.asp?id=3104708
回复
wwwxuebin 2004-06-18
用include 将bcd源文件包含
回复
yinweixian 2004-06-18
不明白,帮顶!
回复
welllove88 2004-06-18
哦!?
回复
发动态
发帖子
Delphi
创建于2007-08-02

4802

社区成员

Delphi 开发及应用
申请成为版主
社区公告
暂无公告