rt.急需 谢。

解决方案 »

  1.   

    我在那本好像是delphi 6.0开发指南上面有关于dll的资料。好像用c或者c++编写成的,非pascal语言的dll不可以直接调用的。要写成pascal语言的形式。。你也可以去看看这本书。很好的。因为书不在旁边不好拷贝给你。见凉 。
      

  2.   

    我现在的项目就是vc和delphi混合编程的,VC的dll一定要把MFC的东东打进去delphi才能调用,另外VC写的dll一定要stdcall。然后把VC的函数原型翻译成delphi的语法,例如:
    VC的函数原型为:int check(char* gf, char** xf); 文件名为:Check.dll
    delphi的为:function check(GF: PChar; var XF: PChar): Integer; stdcall; external 'Check.dll';函数名的大小写在翻译的时候最好保持不变。
    然后就可以按标准的函数一样调用了
      

  3.   

    谢谢楼上的我用VC编写DLL的时候就已经考虑到通用型问题 都采取基本通用的dll形式to sundayboysll:
     不需要将此dll导入近来么 只需要这么声明即可??
      

  4.   

    只要将dll放到当前exe的目录下就行了,除非你是非标准的dll,需要regsvr32一下,否则不需要导入的。
      

  5.   

    ok 3x all 我已经测试 搞定..
      

  6.   

    Delphi可以直接连接VC++的DLL,做法如下:
     1、在VC++的.cpp文件中说明输出函数的名字、类型、调用方式、定义函数执行体:
        extern "C" __declspec(dllexport) void VCvoidfunction(......)
          {
             .......
    return;
          }    extern "C" __declspec(dllexport) DWORD VCdwordfunction(......)
          {
             .......
    return ....;
          } 2、在Delphi中说明,假定做一个单独的引入单元:
        
       1)说明函数类型:
       Type TVCvoidfunction=Function(......); Cdecl;  //函数类型
       Type TVCdwordfunction=Function(......); Cdecl; //函数类型   2)定义函数变量:
       Var VCvoidfunction:  TVCvoidfunction;
           VCdwordfunction: TVCdwordfunction; 3、在Delphi程序中首先动态连接DLL:   DLL_Handle:=LoadLibrary(PChar(DLLPath));
       DLL_Handle>0 Then                                 //若加载成功,
         Begin                                           //则依次定位函数
           Try
             @VCvoidfunction :=GetProcAddress(DLL_Handle,'VCvoidfunction');
             @VCdwordfunction:=GetProcAddress(DLL_Handle,'VCdwordfunction);
           Except
             FreeLibrary(DLL_Handle);
           End
         End
           
     4、在Delphi程序中调用VC的DLL中函数:
          
        直接使用函数名,按Delphi的要求使用。
        注意,VC参数中的&对应Delphi的Var。(本回复来自 http://expert.csdn.net/Expert/topic/2237/2237804.xml?temp=.23164)