Есть проблема:
Я работаю с файлами с помощью low level I\O.
У меня написана маленькая программка, состоящая из exe-шника и dll-лины.
Линковка — dynamic implicit.
Когда я в exe-шнике открываю файл и получаю handle, то тут же я его читаю без проблем. Проблемы появляются, когда я передаю этот handle моей же dll-лине. Видимо там уже ничего неизвестно о ранее открытом файле. В случае чтения, _read возвращает -1, errno = EBADF. Есть предположение, что массив handle-ов (_osfile[]), используемых стандартной библиотекой для хранения информации о файлах, не шарится между моим exe-шником и dll-линой. Есть ли какие-нибудь пути решения этой проблемы?
Это возникает только если статически линковаться с CRT,
т.е., насколько я понимаю возникает 2 экзэмпляра CRT,
и у каждой своя таблица дескрипторов,
может я и не прав, но если использовать msvcrt.dll (для VC) — такого не происходит
Дейсвительно дело в том что exe-шник и dll-лина линковались разными в версиями стандартной библиотеки. Т.е. у DLL при компидяции был указан флаг /MDd, соответственно использовалась MSVCRTD.LIB. А у EXE был указан /MTd — LIBCMTD.LIB.