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
Здравствуйте, slydiman, Вы писали:
S>S> {
S> FileStream *fs = new FileStream(strFileName, IO::FileMode::Open, IO::FileAccess::Read);
S> Byte ByteArray __gc[] = new Byte __gc[(int)fs->Length];
S> unsigned char __pin *buf = &ByteArray[0]; // !!! internal error
S> int nBytesRead = fs->Read(ByteArray, 0, (int)fs->Length);
S> ExternalFunction( buf, nBytesRead );
fs->>Close();
S> }
S>
Может, нужно объявить так:
{
,,,
unsigned char __pin *buf = ByteArray[0];
,,,
}
А полную перекомпиляцию пробовали?
Posted via RSDN NNTP Server 1.9 gamma
>А полную перекомпиляцию пробовали?
Конечно, никакой rebuild не помогает, даже с полной чисткой и на другой машине.
Здравствуйте, slydiman, Вы писали:
S>Microsoft Visual C++ .NET 69586-335-0000007-18784
S>S> {
S> FileStream *fs = new FileStream(strFileName, IO::FileMode::Open, IO::FileAccess::Read);
S> Byte ByteArray __gc[] = new Byte __gc[(int)fs->Length];
S> unsigned char __pin *buf = &ByteArray[0]; // !!! internal error
S> int nBytesRead = fs->Read(ByteArray, 0, (int)fs->Length);
S> ExternalFunction( buf, nBytesRead );
fs->>Close();
S> }
S>
S>В таком виде на последней закрывающей ся скобке компилятор выдает:
S>fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'f:\vs70builds\3077\vc\Compiler\Utc\src\P2\main.c', line 148)
Похоже на баг компилятора, в Microsoft Visual C++ .NET 69586-335-0000007-18439 компилится нормально.