- サマリ: DLL呼び出し
- 環境: Basic
- 状態: 解決
- 投稿者: セルダン?
- 投稿日: 2012-06-05 (火) 16:10:22
質問 
以下のプログラムで、自作のCのDLLを呼び出していますが、
「アクションは支援されません。無効なプロシージャーの呼び出し」
というエラーが発生してしまいます。
対処方法をご教示お願いいたします。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
| | 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
|
回答 
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| | 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
|
でもなぜ?と言う感じです。 -- セルダン
- バッファーを用意しておかないとエラーになるタイプのようですねぇ。 -- はにゃ?
- Dim strRealPath As String * 256でバッファーは確保されないのですか? -- セルダン
- それらしき部分のコードをチラッと見ると・・・、パーサがパースして SbiCodeGen::Gen に渡されているところまで見ましたが・・・。後はご自分でどうぞ。Basic の実装にはもう興味がありませんので、API は Python から使いますが。OOo Basic は PyPy などで実装しなおせばいいんじゃないかと最近は思っています。 -- はにゃ?
感想,コメント,メモ 