需要呼叫一個外部dll的函式,dll中函式描述是:
int nc_open (const char *path, int omode, int *ncidp)
然后我在pb中做了如下定義:
function int nc_open (ref string dogbytes,int dogaddr,int dogdata) library "netcdf.DLL" alias for "nc_open"
程式中做了如下呼叫:
string ls_docname, ls_named
integer li_value
CONSTANT integer NC_NOWRITE = 0
li_value = GetFileOpenName("打開檔案",ls_docname, ls_named, "cdf", "色譜檔案 (*.cdf),*.cdf,")
IF li_value <> 1 THEN return
integer li_ncid, li_retval;
li_retval=nc_open(ls_docname, NC_NOWRITE, li_ncid)
可是總在最后一句報錯error calling external function %s at 7 line in click event
到底是哪里有問題呢?
uj5u.com熱心網友回復:
PB幾?
PB10以下:
function long nc_open (ref string dogbytes,long dogaddr,ref long dogdata) library "netcdf.DLL" alias for "nc_open"
PB10或以上:
function long nc_open (ref string dogbytes,long dogaddr,ref long dogdata) library "netcdf.DLL" alias for "nc_open;ansi"
uj5u.com熱心網友回復:
首先謝謝 xuam 的回答,我按你的改了(pb9),因為你的是long,所以我程式中也改成了long,依然不能通過,換了錯誤提示,好像是由第二個ref引起的,去掉第二個,錯誤提示就和原來一樣了uj5u.com熱心網友回復:
看看函式名大小寫是否正確uj5u.com熱心網友回復:
謝謝yyoinge,函式大小寫是正確的,我真的沒辦法了,我可以把檔案發給你,你幫我看看嗎?uj5u.com熱心網友回復:
可以q:865359042
uj5u.com熱心網友回復:
試下function boolean nc_open (string dogbytes,int dogaddr,int dogdata) library "netcdf.DLL" alias for "nc_open
uj5u.com熱心網友回復:
function int nc_open (ref string dogbytes,int dogaddr, ref int dogdata) library "netcdf.DLL" alias for "nc_open"uj5u.com熱心網友回復:
按xuam兄弟所述的宣告,因為你的DLL需要一個int指標,所以必須使用refli_ncid在使用前初始化一下試試
li_ncid = 0
然后再呼叫函式
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/65201.html
標籤:API 調用
上一篇:獲取可用Comm口
