[ASP.NET]IIS7.0 + delphi元件的怪問題(已解)
兩週前發了一篇文章:[ASP.NET]IIS7.0 + delphi元件的怪問題(未解)。
這個問題在今天終於解掉了,今天在James的指導下終於找到問題所在點,今天為了測試Delphi的COM元件,寫了以下兩個function:
function TClass1.myInt(a1: Integer): Integer; begin result := a1+100; end; function TClass1.myString(xstr1: PChar): PChar; begin result := xstr1; end;
第一個function回傳Integer,第二個function回傳PChar,而測試的結果發現第一個function可以正常被執行,而第二個function則會造成w3wp crash,針對這個現象James給的建議是:PChar並非所有程式語言都認得,一般寫COM的時候不會使用PChar做回傳型別,建議改成WideString,結果很正點的,把PChar改成WideString後,真的可以跑了…Cool…
後來上網找了一些COM元件data type的資料,下面這篇最清楚:
我們可以看到Delphi的部分確實沒有列出PChar,非常感謝James的指導,對高手來說這個果然很簡單阿...
參考資料:
C# PInvoke Delphi dll that returns a string fails in IIS only
游舒帆 (gipi) 探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。 |