私は誰かがC++で作ったDLLを持っています。 VBでこのDLLを使う必要があったので、VBで呼び出せる関数を持つC++で別のdllを作らなければならなかった。VBでクラッシュするC++ DLL
私が作ったC++のDLLには4つの機能があります。 2つのコールバック関数は、元のC++から情報を取得します。そして、私はVBからその情報を送信するために呼び出すことができる2つの関数。
私はコンソールアプリケーションでそれを無限にテストしたので、元のdllはうまく動作します。
しかし、私は私のDLLとVBでそれを使用します。私はランダムクラッシュを取得します。
私のVBアプリケーションにはテストのためだけのコードはほとんどありません。それは情報を出力するだけなので、問題はありません。
私は問題が私が作ったC++のdllにあると信じています。私はC++でかなり新しいです。
私は多分変数が同時に2点でアクセスされると思いますが(これは可能でしょうか?)、それがクラッシュする原因になりますか?
私のCの相続人は基本的なレイアウト++のdll
//global variables
CString allInfo="";
char* info=new char[25000];
//call back function 1
HANDLE OnInfo(SendInfo* tempInfo)
{
CString stringTemp="";
stringTemp=tempInfo->infomessage;
allInfo=allInfo+ stringTemp+"\n";
return 0;
}
//function for vb
BSTR _stdcall vbInfo()
{
allInfo=allInfo.Right(20000); //get last 20,000 characters
strcpy_s(info,20000,allInfo);
BSTR Message;
Message = SysAllocStringByteLen (info, lstrlen(info));
return Message;
}
クラッシュは完全にランダムに発生するようです。
提案がありますか?脇のCStringクラス参照のためにグーグルでいることを学んでから
おかげ
これらの関数のvb.net宣言を投稿します。 –