请注意 DELPHI 中,EXE如果调用外部的DLL
Delphi 里用 function test():string;stdcall; external 'xx.dll'  // 第一种情况
Delphi里用 function test():string;stdcall; external '.\xx.dll' // 第二种情况
Delphi里用 function test():string;stdcall; external '指定路经\xx.dll' // 第三种情况上面在EXE中都是可以的但是在ACTIVEX中,只允许第一种的情况,其它两种情况都是错误的.
而第一中情况正好是程序根目录,还有系统目录.
这是我想提醒做ACTIVX人的注意问题.同时我想问下,为什么会这样.
还是我自己什么地方搞错了!  

解决方案 »

  1.   

    俺都是先声明
    然后再loadLibrary
    然后再GetProcAddress
      

  2.   

      me 2
    btw:  Delphi里用 function test():string;stdcall; external '指定路经\xx.dll' // 第三种情况
    做ACTIVEX 会这样用吗?一般ocx是发布出去的.比如IE上用,难道客户端浏览器那边也会有这个文件?至于 .\ 这个,应该是表示当前路径下吧,这样和第一种情况相比,只是唯一确定了搜索路径在当前路径下,而不是还包括什么system32之类的那些.是不是你发布的时候,dll没有放在当前路径?
      

  3.   

    我确定放进去了,因为如果DLL路径没加载到,加载ACTIVX时,程序自动会报出DLL没加载成功。
    而用倒‘.\’DLL加载没有报出错误,说明DLL路径是对的啦,不对,程序调用DLL函数时,总是报内存出错,
    而DLL函数则根本连进都没有进去。但是第一种情况却是正确的。
      

  4.   

    把activex导到组件面板上,当控件来用看看什么结果。
      

  5.   

    Com都是路径无关的东东,要在Com中调用Dll必须知道在运行机器中dll所处位置。建议根据自身GUID查找注册表中自身Com被注册机器的安装目录在根据相对路径定位所需DLL