问题很简单,但分2部分说吧
是一个Delphi代码,DLL里有
DSGetNextData : function :pointer;stdcall;
我要引用他
于是,首先,第一步,我转化为BCB代码为
*(__stdcall DSGetNextData) () ;
之后调用DLL
DSGetNextData = (* (__stdcall)())GetProcAddress(m_hDllHandle,"DSGetNextData");//此行报错但是报
[C++ Error] Unit1.cpp(92): E2188 Expression syntax
[C++ Error] Unit1.cpp(93): E2235 Member function must be called or its address taken
我想我这2个步骤肯定有个地方不对
是我转化DELPHI为BCB代码出错呢?
还是调用DLL出错?
请大家帮忙
是一个Delphi代码,DLL里有
DSGetNextData : function :pointer;stdcall;
我要引用他
于是,首先,第一步,我转化为BCB代码为
*(__stdcall DSGetNextData) () ;
之后调用DLL
DSGetNextData = (* (__stdcall)())GetProcAddress(m_hDllHandle,"DSGetNextData");//此行报错但是报
[C++ Error] Unit1.cpp(92): E2188 Expression syntax
[C++ Error] Unit1.cpp(93): E2235 Member function must be called or its address taken
我想我这2个步骤肯定有个地方不对
是我转化DELPHI为BCB代码出错呢?
还是调用DLL出错?
请大家帮忙
VC定义
typedef void* __stdcall(* DSGetNextData)()
如果是Delphi,直接载入就可以使用。
如果是VC,在VC中编写DLL时,使用了.def文件,在出口函数声明时也在前面加上了__declspec(dllexport)说明。把VC生成的DLL文件放在了当前目录下,使用BCB的命令行工具implib生成的.lib文件,具体格式为implib bcb.lib vc.dll,再把implib根据dll生成的LIB文件加入到工程中,再在工程中加入DLL出口函数的声明(函数名前加上了WINAPI,即__stdcall;每个函数定义的最前面也加上了__declspec(dllimport))。
而且由于BCB和VC++成立函数名转换的做法不同。所以在VC中最好是输出函数为C函数的DLL,如果输出函数是C++类,则可能无法调用。