是这样……有个加密机需要调用dll使用,调用时有个函数总是一执行就出错---------------------------
Debugger Exception Notification
---------------------------
Project Edebug.exe raised exception class EAccessViolation with message 'Access violation at address 1000151D in module 'dculc.dll'. Write of address 0043612C'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------结果最后竟然发现是因为用来传递参数的变量是在implementation之前的var部分声明的改为在type当中的Privite或者public中声明就没问题如果把这个变量在var里声明,改为aaaaaaaa来避免可能发生的重名结果,也会出问题但如果另写一个极简程序只实现这一个功能时,这个情况又不存在了……在哪声明都没问题这下真心尿崩了……发出来看看有人遇到过类似的情况么……delphidll

解决方案 »

  1.   

    改为在type当中的Privite或者public中声明就没问题
    --------------------------------------------
    这个你指的应该是类的私有变量, 类的外部无法访问变量是在implementation之前的var部分声明的
    -------------------------------------------------
    是全局变量, 只要引用了该单元就可以使用, 需要注意变量的值是否初始化及有效.
      

  2.   

    DLL 不支持全局变量共享。要想从外部改变一个变量值,应该写个外部函数。要是不需要全局共享,那就应该把变量声明放在 implementation 后面。