当前位置: 代码迷 >> PB >> pb 声明多个外部函数,奇怪的异常
  详细解决方案

pb 声明多个外部函数,奇怪的异常

热度:166   发布时间:2016-04-29 09:28:42.0
pb 声明多个外部函数,奇怪的错误
很长时间之前 ,就遇到过这样的问题,一个工程,单独调用某个 外部函数,没有问题,但是一个工程里,如果调用了多个DLL里的多个函数,就很容易出错, 错误提示是 bad runtime function reference at line 1 之类的,就好像是没有声明这个函数,但实际已经声明了.有时候在声明里,把多个函数的声明顺序改一下,又可以正常运行了. 

以下是声明里的内容



FUNCTION string MDString(string arg1,int arg2) Library "m.dat" alias for "MDString;Ansi"

Function int b64_size(ulong size,ulong flag) Library "jmjm.dll" alias for "b64_size";

function int b64_des(ref String in,ref string out,string key,ulong size,ulong flag) Library "jmjm.dll" alias for "b64_des";

Function long FindWindowExA( long hParent, long hChildAfter, String lpszClass, String lpszWindow ) Library "user32.dll" alias for "FindWindowExA;ANSI" 

//api函数,工具栏字体,将以下API放在公用声明里
FUNCTION ulong GetWindowulong(ulong hwnd,ulong nIndex) LIBRARY "user32.dll" ALIAS FOR "GetWindowLongA" 
Function long FN_ToolBarSetFont(long unknown,string fontname,long fontsize,ulong unknown1,string str) library "pbvm115.dll" alias for "FN_ToolBarSetFont;ANSI" 
Subroutine CopyMemory( long dest,ref blob source,long len) library "kernel32.dll" ALIAS FOR "RtlMoveMemory;ANSI" 
function ulong GetLastError () library "kernel32.dll" ALIAS FOR "GetLastError;ANSI" 
FUNCTION ulong FindWindowEx(ulong hWnd1,ulong hWnd2,ref string lpsz1,ref string lpsz2) LIBRARY "user32.dll" ALIAS FOR "FindWindowExA"

Function long getcpuid() Library "c.dat"
//加密解密

Function boolean DiskID32(ref string model,ref string id) library "d.dat" alias for "DiskID32"




------解决方案--------------------
没遇到过,友情帮顶.
------解决方案--------------------
估计是dll内部的问题,没遇到过~~
------解决方案--------------------
各动态库之间,尤其是自己编写的动态库之间是不是有冲突。
记得以前碰到过一个问题,我使用的动态库的文件名,同系统中的某个动态库的文件名重复了,结果使用的时候总是报错,找了很久才发现。
------解决方案--------------------
楼主用的哪个版本的PB?我在11.5中也遇到过类似的问题,几乎和你的一模一样,也是没办法解决。。。。。
语句换行以后就能正常运行。
  相关解决方案