** [[OOobbs3/94]] [#a5b2bba2] -''サマリ'': DLL呼び出し -''環境'': Basic -''状態'': 未解決 -''状態'': 解決 -''投稿者'': [[セルダン]] -''投稿日'': 2012-06-05 (火) 16:10:22 *** 質問 [#b17e6261] 以下のプログラムで、自作のCのDLLを呼び出していますが、 「アクションは支援されません。無効なプロシージャーの呼び出し」 というエラーが発生してしまいます。 対処方法をご教示お願いいたします。 #code(ob){{ REM ***** BASIC ***** Declare Function JoConvTruePath Lib "officeoxt20.dll" Alias "ConvTruePath" ( ByRef strTruePath As String, ByVal nOutSize As Long, ByRef strPath As String ) As Integer Sub Main 'システムパスを取得 Dim iSize As Long Dim iRet As Long Dim strBufPath As String * 256 Dim strRealPath As String * 256 iSize = 256 strBufPath = "C:\Program Files\Java" iRet = JoConvTruePath( strRealPath , iSize, strBufPath) End Sub }} *** 回答 [#uce2cb11] - 今日も感謝でついてる♪ 自己解決しました。 #code(ob){{ REM ***** BASIC ***** Declare Function JoConvTruePath Lib "officeoxt20.dll" Alias "ConvTruePath" ( ByRef strTruePath As String, ByVal nOutSize As Long, ByRef strPath As String ) As Integer Sub Main 'システムパスを取得 Dim iSize As Long Dim iRet As Long Dim strBufPath As String * 256 Dim strRealPath As String * 256 iSize = 256 strBufPath = "C:\Program Files\Java" strRealPath = String(iSize," ") ← この行を追加したらエラーはなくなりました。 iRet = JoConvTruePath( strRealPath , iSize, strBufPath) End Sub }} でもなぜ?と言う感じです。 -- セルダン &new{2012-06-06 (水) 15:57:46}; - バッファーを用意しておかないとエラーになるタイプのようですねぇ。 -- はにゃ? &new{2012-06-07 (Thu) 22:11:15}; - Dim strRealPath As String * 256でバッファーは確保されないのですか? -- セルダン &new{2012-06-08 (金) 11:18:36}; - それらしき部分のコードをチラッと見ると・・・、パーサがパースして SbiCodeGen::Gen に渡されているところまで見ましたが・・・。後はご自分でどうぞ。Basic の実装にはもう興味がありませんので、API は Python から使いますが。OOo Basic は PyPy などで実装しなおせばいいんじゃないかと最近は思っています。 -- はにゃ? &new{2012-06-08 (金) 21:41:41}; #comment *** 感想,コメント,メモ [#jca52d33] #comment |