Microsoft Visual C++ .NET 69586-335-0000007-18784
Простейшая задача — загрузить бинарный файл в буфер и передать
этот буфер в некоторую функцию. Имя файла типа String.
{
FileStream *fs = new FileStream(strFileName, IO::FileMode::Open, IO::FileAccess::Read);
Byte ByteArray __gc[] = new Byte __gc[(int)fs->Length];
unsigned char __pin *buf = &ByteArray[0]; // !!! internal error
int nBytesRead = fs->Read(ByteArray, 0, (int)fs->Length);
ExternalFunction( buf, nBytesRead );
fs->Close();
}
В таком виде на последней закрывающей ся скобке компилятор выдает:
fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'f:\vs70builds\3077\vc\Compiler\Utc\src\P2\main.c', line 148)
Если закоментировать строку
unsigned char __pin *buf = &ByteArray[0];
то ошибка пропадает.
Попробовал с другой стороны:
{
char masFileName __gc[] = Encoding::ASCII->GetBytes(strFileName);
char __pin *asFileName = &masFileName[0];
int fh = open( asFileName, O_RDONLY | O_BINARY, S_IREAD );
if( fh != -1 ){
int size = filelength(fh);
char *buf = new char[size];
ZeroMemory(buf,size);
read( fh, buf, size );
ExternalFunction( buf, size );
delete buf;
}
close(fh);
}
таже ошибка, которая исчезает если закоментировать строку
char __pin *asFileName = &masFileName[0];
подскажите что-нибудь!
04.11.04 01:47: Перенесено модератором из 'C/C++' — Павел Кузнецов
04.11.04 11:28: Перенесено модератором из '.NET' — AndrewVK