##############################################
VC6側
struct aStruct
{
int lStart;
int lLen;
char* cFileName;
};
FCONVPROJREADWRITE_API short __stdcall fncRead(aStruct* pData,char* OutByte);
##############################################
VB6側
Public Type sInput
lStart As Long
lLen As Long
cFileName As String * 200
End Type
Public Declare Function fncRead Lib "FConvProjReadWrite.dll" (aData As sInput, ByVal oLineRead As Byte)
Private BBufR(0) As Byte
〜
With tsInput
.lStart = 1
.lLen = 1
.cFileName = Space(200)
.cFileName = Replace(InputFilePath, "\", "\\") & Chr(0)
End With
AnsDll = fncRead(tsInput, BBufR)
〜
##############################################
と作ったのですが、VC側でデバッグをかけてみると、うまく格納していないみたいなのです。
結果が、
pData 0x0012f19c
├lStart 0
├lLen 4307969
└cFileName 0x00000001 ""
└CX0030: Error: 式を評価できません
OutByte 0x0012f014 "■"
└ 1 "■"
lStartに1 lLenに1 cFileNameにファイルのパス(日本語含む) のようになってほしいのですが、HPをまわっていろいろなパターンを試したのですがだめでした。
そして、引数のcFileNameを使い。
if((fp=fopen((*pData).cFileName,"rb"))==NULL){
〜
としたいのですが、これも可能なのでしょうか?
指摘をよろしくお願いいたします。
最後ですが長文申し訳ありません。
構造体にString 型が入っていると面倒なんですよね。
とりあえずこの辺を読まれたし。
http://support.microsoft.com/default.aspx?scid=kb;ja;410837
ファイルパスとファイル名を渡すので有れば、それらのASCコードをLong型の
配列に入れてDLLに渡し、DLL側で文字列に変換する方法もあると思います。
ありがとうございます。
これを見てまた色々試してみます。