У меня есть dll, что кто-то сделал меня в C ++. Мне нужно было использовать эту dll в VB, чтобы сделать это, мне пришлось сделать еще одну dll в C ++, имеющую функции, которые я могу вызывать в VB.
Созданная мной C ++ dll имеет 4 функции. 2 функции обратного вызова, которые извлекают информацию из исходного C ++. И 2 функции, которые я могу вызвать из VB для отправки этой информации.
Я знаю, что оригинальная dll работает нормально, поскольку я бесконечно тестировал ее в консольном приложении.
Однако, когда я использую его с моими dll и VB .. я получаю случайные сбои.
В моем приложении VB почти нет кода, так как он только для тестирования. Он просто выводит информацию, поэтому проблем нет.
Я считаю, что проблема в C ++ DLL, которую я сделал. Я довольно новый с C ++.
Я думаю, возможно, к переменной получают доступ в 2spots одновременно (это возможно?) И вызывает ее сбой?
Вот основная компоновка моей 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;
}
Авария, кажется, происходит совершенно случайно.
Есть предложения?
Спасибо