на сях есть следующая фукция:
__declspec(dllexport) char* __cdecl GetBidList(char* secname, char* boardname)
{
char* Bids = new char[1000];
Bids[0] = '\0';
return Bids;
}
ее мы пытаемся грузить из C#
[DllImport("Matching.dll", EntryPoint = "GetBidList")]
public static extern string GetBidList( string secname, string secboard );
потом пробуем ее вызывать 6 раз подрят
BidsDATA = MatchingTool.GetBidList( this.Params.SecName, (string)Boards[i] );
BidsDATA = MatchingTool.GetBidList( this.Params.SecName, (string)Boards[i] );
BidsDATA = MatchingTool.GetBidList( this.Params.SecName, (string)Boards[i] );
BidsDATA = MatchingTool.GetBidList( this.Params.SecName, (string)Boards[i] );
BidsDATA = MatchingTool.GetBidList( this.Params.SecName, (string)Boards[i] );
BidsDATA = MatchingTool.GetBidList( this.Params.SecName, (string)Boards[i] );
Если запускать на windows 2000, то первые 5 он нормально работает, а на 6-й падает с экспешеном про NullReference.
А если запускать на машинке с windows xp, то все работает.
Опытным путем установил, что если дллку заменить на следующую:
__declspec(dllexport) char* __cdecl GetBidList(char* secname, char* boardname)
{
char* Bids = new char[1000];
Bids[0] = '\0';
return NULL;
}
то все работает
и если сделать следующую дллку
char Test[1000];
__declspec(dllexport) char* __cdecl GetBidList(char* secname, char* boardname)
{
char* Bids = new char[1000];
Test[0] = '\0';
return Test;
}
то тоже все работает