c 與IDL混編問題

2021-06-27 04:20:53 字數 1451 閱讀 5673

將原有的idl計算模組整合到新的環境中後在計算的時候出錯(attempted to read or write protected memory. this is often anindication that other memory is corrupt.),跟蹤**發現getnameddata獲取狀態值時時出錯。

_idl.executestr(_comexp);

while(!bl)}}

}嘗試更新idl控制項,問題小時,而新的問題是沒有產出結果檔案。又做了一些新的嘗試,都出現不同的錯誤,例如在初始化idl控制項時

this.axidldrawwidget1.initidl((int)this.handle);這句**報錯,

現在又在執行_idl.executestr(_comexp);

報錯說找不到idl路徑下的某個庫檔案,總之一頭霧水

從頭開始,新建乙個新的工程,只包括剛出錯的idl模組,新增idl控制項,以及其他引用,運算成功,其中如果idlpath設定出錯會在initidl時提示idl沒有找到idl.dll檔案(是idl自身提示)

this.axidldrawwidget1.idlpath =  @"c:\programfiles (x86)\itt\idl71\bin\bin.x86\idl.dll";

this.axidldrawwidget1.initidl((int)this.handle);

回想模組整合時沒有發出此問題,在系統某個地方已經賦值???

直接啟動模組

設定idlpath

初始化initidl

結果實驗1否否

attempted to read or write protected memory. this is often an indication th

實驗2否

是找不到idl.dll檔案

實驗3是

否attempted to read or write protected memory. this is often an indication that other memory is corrupt.

實驗4是

是計算成功

通過主窗體呼叫idl模組,主窗體設定idlpath和initidl,idl模組中沒有,計算成功

將上午的經驗轉移到出問題的工程中結果….完全無效,原來程式該有的都有了,更讓我不解的是,上午為測試新建的那個可以跑通的工程加入到專案中也不可以,作為啟動專案來跑就可以,這還可以接受,令人髮指的是現在單獨也跑步起來了,真是崩潰。已經一天半了懶得再測了,直接將他找不到的庫檔案和exe檔案放一起跑程式吧

oraconn = new

oracleconnection(strconn);

這句話導致程式找不到idl.dll世界不大無奇不有真是無語了

通過idltest工程的測試發現debug下的幾個idl庫檔案的問題,程式會首先呼叫當前目錄下的庫檔案然後才去環境變數中搜尋,可能其中有什麼問題

文章僅為記錄備用

C與C 的混編方法

0 約定 c檔案使用gcc編譯,cpp檔案使用g 編譯,生成對應的object檔案 g 也可以編譯c檔案,但是預設編譯出來的符號是以c 方式 我們可以指定extern c 或者 extern c 來指定編譯的時候函式是以c或者c 方式修飾 使用g 編譯需要嚴格型別檢查,所以對於c檔案,盡量還是用gc...

c呼叫c qt QT下c和c 混編問題

這些天折騰qt,在整合各種 的時候,老司機也碰到不少問題,為了方便後查,初步總結如下 1.新版qt中一般使用g 編譯cpp檔案和c檔案,可以在專案中同時使用c檔案和cpp檔案。字尾cpp檔案g 自動識別為c 自動進行c 編譯,字尾c檔案自動識別為c 進行c編譯。這個時候必須注意在c檔案中不要使用c ...

python與C混編的執行邏輯

之前遇到過乙個c語言呼叫python的問題,是載入python版本可以在初始化前設定,如果不設定,會使用預設路徑 usr bin python.設定方法為在py initialize呼叫前使用py setprogramname,即可呼叫指定版本的python 當然還有乙個問題,就是寫了乙個pytho...