问题很简单,但分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出错?
请大家帮忙

解决方案 »

  1.   

    不会 BCB
    VC定义
    typedef void* __stdcall(* DSGetNextData)()
      

  2.   

    typedef void* (_stdcall* DSGetNextData)()
      

  3.   

    DLL是用什么语言写的?Delphi还是vc?
    如果是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++类,则可能无法调用。