如上.
以前有写过一些简单的regular的dll 现在需要写给delphi用
问题
1. regular的dll也可以使用mfc类库,需要这么声明 extern "C" VOID WINAPI fun..
但是这样对调用者有另外的要求么>
2. 如果不想使用MFC 直接用API写 很多API也不熟悉 比如说文件操作 多线程等
3. 写好了 delphi中该如何调用? 应该不像vc中同样调用吧就此写过!!
以前有写过一些简单的regular的dll 现在需要写给delphi用
问题
1. regular的dll也可以使用mfc类库,需要这么声明 extern "C" VOID WINAPI fun..
但是这样对调用者有另外的要求么>
2. 如果不想使用MFC 直接用API写 很多API也不熟悉 比如说文件操作 多线程等
3. 写好了 delphi中该如何调用? 应该不像vc中同样调用吧就此写过!!
delphi调用?简单一点就是显式调用了(LoadLibrary)
或者说我传参数传一个动态的struct地址之类的.
extern "C" __declspec(dllexport) BOOL Init(char* fileStr1,char* fileStr2,unsigned short portAdree=0X3F8,int fileType2 = 6,int fileTimes = 3)Delphi中引用:
TMyProc_Init = function(fileStr1:pchar;{上半显示文字,不能大于12个字节}
fileStr2:pchar;{走马灯文字}
portAdree:word = 1016;{串口地址,默认为串口1(0X3F8),0x2F8为串口2}
fileType2:integer = 6;{显示方式}
fileTimes:integer = 3{停屏时间}):boolean;cdecl;我上个月刚做的一个项目中的一部分
GetProcAddress
以及引用
然后再删除库,不用我说了吧?
函数为cdecl
这样 不太理想 所以想传入 结构指针 可后来考虑到 c/c++中 struct与 delphi中
record可能不一样 所以就没有
我现在想到了其他的办法代替了
另: w我现在就是向你说的那样做的
对了 谁知道c/c++/vc中 自动解析/读取 ini文件的函数??
据说 delphi中有.还能用缺省参数么??3x all。
我刚做了dll的部分 实现了部分函数
我是用的mfc的静态使用Mfc类的 regualar类 可是我测试的使用(vc调用) 却有问题?
我的做法如下
1. def 导出函数名
2. 调用者工程包含.lib 与.h文件
可是当我在 使用dll中导出的函数时 提示说: error LNK2001: unresolved external symbol _SetFileDir请教:
那是我的调用方式有误?我以前写过win32的dll就是这样调用的 无误.
或者还是我的创建方式有误,因为我只想导出函数 不想导出类 所以用正规的静态使用mfc类的dll。kkk
非常感谢.
谢谢.
Delphi中是没有实际的指针的,你向他传递指针好象有点不妥,不妨传递一个结构体变量试一试,由于对Delphi不是很熟,只能提个建议!^_^
可是就是在传结构指针的话就有问题
我在c中声明:
1. extern "C" WINAPI TestStruct1(char* pFileName, StructA* pStruct)
2. extern "C" WINAPI TestStruct2(char* pFileName, void* pStruct)
{
StructA* p = (StructA*)pStruct;
}delphi中调用
t
newType=record
age: Array[0..10] of pChar;
name: Array[0..10] of pchar;
sex: Array[0..6] of pchar;然后调用
var
test:newType;
然后分别给test的数据赋值 然后 TestStruct1(fileName, test);
注意: 只有成功写入 test.age的数据 而后面的都没有传入 这是为什么呢
为什么只能传入结构的第一个数据?