VC++ .NET - internal compiler error
От: slydiman Россия http://slydiman.narod.ru
Дата: 01.11.04 13:42
Оценка:
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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.