我需要把C和C++写的工程做成DLL库,然后把这个DLL库给delphi调用,
1、请问怎样用VC生成dll库呢?
2、在生成库的时候,应该注意哪些地方呢?
3、给delphi调用的时候,就给一个.dll文件就行了么?还需要什么接口文件么? 本人刚接触库,请知道的讲得详细一点
1、请问怎样用VC生成dll库呢?
2、在生成库的时候,应该注意哪些地方呢?
3、给delphi调用的时候,就给一个.dll文件就行了么?还需要什么接口文件么? 本人刚接触库,请知道的讲得详细一点
生成.def文件,指定函数名 是什么意思啊?
然后声明:
找到要用到 动态库名.dll 中的的函数名之一
在delphi中声明如下:function ‘函数名’(参数1:pchar;参数2:pchar):integer;stdcall; external '动态库名.dll';然后在delphi中直接调用‘函数名’这个函数就可以了,就像调用DELHPI自己的函数一样
2、声明函数的时候尽量采用winapi的形式 例如:int winapi myfunc(int a);
delphi只要dll文件就可。
__declspec(dllexport) int __stdcall IsWinNT()
会转换为IsWinNT@0,这样你在VB中必须这样声明:
Declare Function IsWinNT Lib "my.dll" Alias "IsWinNT@0" () As Long
@的后面的数由于参数类型不同而可能不同。这显然不太方便。所以如果要想避免这种转换,就要使用.def文件方式。 参考:http://blog.chinaunix.net/u/18517/showart_309975.html
其他的参照5楼所说即可,一般情况下只需要dll
/**VcDllTest.h**/#ifndef VcDllTest_H
#define VcDllTest_H
extern "C" int __declspec(dllexport) Sum(int x, int y);
#endif/**VcDllTest.cpp**/#include "VcDllTest.h"int Sum(int x, int y)
{
return x + y;
}
delphi调用的时候记得声明为stdcall
MFC AppWizard (dll) -> Regular Dll Using Share MFC Dll还是通过下面的方法生成非MFC DLL 呢?
Win32 Dynamic~Lind Library -> An empty Dll Project