用静态方法调用时说找不到入口!
用动态方法调用时用loadlibary后再用getprocaddress时返回值为nil!
请高手帮忙!

解决方案 »

  1.   

    可能是你DLL没有输出,用Depends看一下。
      

  2.   

    我用VB写的DLL里面就只有两个函数!在VB中只要引用了就能直接使用这两个函数,可是怎样才能在Delphi中调用呢?
      

  3.   

    vb的Dll不是标准的windows dll别用调用标准dll的方法去做..vb 的dll是activex dll你用引入控件的方法试试.
      

  4.   

    在调用之前你必须先确保ActiveX DLL必须被注册.有两个办法调用ActiveX DLL: 
        1、使用CreateObject函数动态地建立对象。在Delphi的Demos\ActiveX\OleAuto\AutoCtrl目录中有这方面的例子,它是调用Word的例子。 
        2、使用Project|Import Type Library项,然后从目前系统中注册的所有DLL中找到你的DLL,这样Delphi就会生成一个.pas文件,你可以调用这个单元来使用ActiveX DLL中的类。
      

  5.   

    我用楼上的第二种方法可以调用VB编写的DLL了,可是这个DLL文件的路径却不能改!一旦改了,就说找不到模块!而不象Delphi写的DLL那样,只要在EXE文件的相同目录里就行了!还有什么更好的方法吗?谢谢!
      

  6.   

    比如,现在我用vb写个类;class Test
    public Test As String
    function Echo() AS String
      Echo = Test
    end function
    end class保存为Test.cls,工程为Test,生成后是 test.test,编译的dll 用命令行程序RegSvr32打开注册。delphi 中 new Application ,然后在你的Form中的uses 加入 ComObjok,建立它var ObjCom:Variant;
    begin
      ObjCom := CreateOLEObject('Test.test');
      ObjCom.Test := 'Hello vb!';
      Showmessage(ObjCom.Echo);
      ObjCom := null;
    end;//代码很简单,随手写的不免有错误之处,见谅,希望对你有用
      

  7.   

    需要说明的是,上面的例子要建立的OLE 对象的名称为'Test.Test',前者是类模块名,后者是类名;要修改和设置,请在vb中new Project ,选择 activeX Dll ,然后选择Project 的属性,修改Name ;名称不对的话你建立不了。
      

  8.   

    路径是注册的时候写入注册表的,当然不能随便挪来挪去了
    你可以先在当前目录搜索这个dll文件,然后用代码注册它一次就ok