我應該快有一年工作經驗,雖然畢業才沒有幾天。 一點都不傷感,因為沒有感覺,一直都在工作。
我的工作前段時間主要給寫IDL接口(下個月開始投向GIS開發),主要是AUTOCAD的接口,我公司用teigha的庫。
不得不說代碼寫的真的漂亮,幫助文檔也寫的很好。
IDL 資料本身就很少,IDL 接口資料就幾乎就一本老外的書籍,而且版本比較老了,所以難度還是有一點的。
我現在對IDL接口應該是比較熟練,如果你遇到一些問題,可以問我,maybe我是知道的。
好了,說一下正題。
在IDL中大量使用關鍵字,所以我們在開發IDL接口當中用到關鍵字也是非常多的。
我就不分析關鍵字的原理了,因為快要下班了。
最新版關鍵字用法和以前老版本不一樣所以需要注意。
例子代碼在幫助文檔有。
現在我覺一個例子
現在我們定義關鍵字的IDL_KW_PAR
static IDL_KW_PAR kw_pars[] = {
{“BLOCK”,IDL_TYP_STRING,1,0,(int*)IDL_KW_OFFSETOF(block_there),(char*)IDL_KW_OFFSETOF(Block)},
{"INDEX",IDL_TYP_LONG,1,0,(int*)IDL_KW_OFFSETOF(index_there),(char*) IDL_KW_OFFSETOF(index),
{NULL}
};
這里就定義好了 IDL_KW_PAR.
注意一個問題,BLOCK 和 INDEX 定義順序有講求。
你必須要把BLOCK放到INDEX上面。
因為B < I 。
如果沒有按照這樣順序聲明你就使用關鍵字就會出現不能分配關鍵字。
因為這個必須 按照 in LEXICAL order (詞法順序來弄)。
你會覺得這個非常好笑,但卻是是這樣的,這個在idl help 里面是沒有說明的。
這個是我在分析export.h 發現問題解決方法。
我就簡單說到這里吧。
如果你想知道IDL 怎么在結構體里面傳遞 IDL_VPTR 或者 怎么返回動態的數據 或者 === 或者 一些DWG的東西也可以找我哦。
其實我想說我擅長網絡開發行不呢!!!!!
My QQ 群:274301756
速度下班,我IT 但我從來不加班。。。
FeedBack:
# re: IDL接口或許你會遇到一個挺無語的地方------》關鍵字
2015-08-24 14:26 | 張星星
你好老師, 我在做hdf的讀取和校正,我在用c#調用idl時,要傳hdf的路徑進pro時。出現這個錯誤:IDL_M_KEYWORD_ILLEGAL:Keyword parameters not allowed in call。 不知道是什么原因,代碼是這樣的、:
textBox1.Text=fileDialog1.FileName;// fileDialog1.FileName顯示選中文件的路徑
object objStr = textBox1.Text;
this.axIDLDrawWidget1.CreateDrawWidget();
this.axIDLDrawWidget1.SetNamedData("modisname", objStr);
this.axIDLDrawWidget1.ExecuteStr(@".Compile radiation_correction.pro");
this.axIDLDrawWidget1.ExecuteStr("radiation_correction,modisname=modisname");
//讀取數據
this.axIDLDrawWidget1.ExecuteStr("data = read_image('" + @"D:\DownLoad\fushejiaozheng.img" + "', /true)");
//設置當前顯示窗體
this.axIDLDrawWidget1.ExecuteStr("widget_control, " + this.axIDLDrawWidget1.DrawId.ToString() + ", get_value=WinID");
this.axIDLDrawWidget1.ExecuteStr("wset, WinID");
//顯示圖像
this.axIDLDrawWidget1.ExecuteStr("tv, congrid(data, 1, 500, 350), /true"); 回復 更多評論
textBox1.Text=fileDialog1.FileName;// fileDialog1.FileName顯示選中文件的路徑
object objStr = textBox1.Text;
this.axIDLDrawWidget1.CreateDrawWidget();
this.axIDLDrawWidget1.SetNamedData("modisname", objStr);
this.axIDLDrawWidget1.ExecuteStr(@".Compile radiation_correction.pro");
this.axIDLDrawWidget1.ExecuteStr("radiation_correction,modisname=modisname");
//讀取數據
this.axIDLDrawWidget1.ExecuteStr("data = read_image('" + @"D:\DownLoad\fushejiaozheng.img" + "', /true)");
//設置當前顯示窗體
this.axIDLDrawWidget1.ExecuteStr("widget_control, " + this.axIDLDrawWidget1.DrawId.ToString() + ", get_value=WinID");
this.axIDLDrawWidget1.ExecuteStr("wset, WinID");
//顯示圖像
this.axIDLDrawWidget1.ExecuteStr("tv, congrid(data, 1, 500, 350), /true"); 回復 更多評論
只有注冊用戶登錄后才能發表評論。 | ||
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
![]() |
||
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
|
||
|
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
24 | 25 | 26 | 27 | 28 | 29 | 30 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 | |||
8 | 9 | 10 | 11 | 12 | 13 | 14 | |||
15 | 16 | 17 | 18 | 19 | 20 | 21 | |||
22 | 23 | 24 | 25 | 26 | 27 | 28 | |||
29 | 30 | 31 | 1 | 2 | 3 | 4 |
常用鏈接
留言簿(4)
隨筆檔案(25)
- 2013年12月 (3)
- 2013年11月 (3)
- 2013年7月 (2)
- 2013年6月 (2)
- 2013年5月 (7)
- 2013年4月 (1)
- 2012年8月 (1)
- 2012年6月 (1)
- 2012年5月 (4)
- 2012年4月 (1)
搜索
最新評論

- 1.?re: IDL接口或許你會遇到一個挺無語的地方------》關鍵字
- 評論內容較長,點擊標題查看
- --小魚兒
- 2.?re: IDL接口或許你會遇到一個挺無語的地方------》關鍵字
- 評論內容較長,點擊標題查看
- --張星星
- 3.?re: 你真的懂select嗎??[未登錄]
- 寫的很棒誒
- --Charles
- 4.?re: c#對excel 圖表操作
- 評論內容較長,點擊標題查看
- --HappyCoding
- 5.?re: 今目標簽退軟件(方便一些人吧)
-
不能。。。@匿名
- --小魚兒