Oracle 8i, Visual C++.NET
При запуске программы возникает ошибка "OCI.DLL Неверная попытка доступа к адресу памяти.", затем "Ошибка при инициализации приложения". При этом в программе функции OCI хоть и используются в реализации класса, но объект класса не создается, т.е. фактически они не вызываются.
Чудес не бывает. Если ошибка в dll — значит, управление пришло в эту dll, значит, кто-то откуда-то ее таки вызвал. Значит — разматывать стек, если нет лучшего варианта.
В принципе, конечно, может возникать ошибка в dllmain — но это сомнительно, если, конечно, память не глючит. Такую ошибку нашли бы еще лет семь назад. В любом случае, это легко проверить — сделать тестовую программу, которая делает только LoadLibrary ("oci.dll").
Здравствуйте, satura, Вы писали:
S>Oracle 8i, Visual C++.NET S>При запуске программы возникает ошибка "OCI.DLL Неверная попытка доступа к адресу памяти.", затем "Ошибка при инициализации приложения". При этом в программе функции OCI хоть и используются в реализации класса, но объект класса не создается, т.е. фактически они не вызываются.
возмоно поможет в ваших изысканиях
oci.dll использует msvcrt.dll а C++.NET парит msvcrt70.dll
Эксперименты показали, что приложения, не использующие MFC, работают нормально.
Т.е. проблема в MFC, которое исп-ет msvcrt.lib, которая в свою очередь вызывает msvcrt70.dll, что и вызывает ошибку, так? Я слабо разбираюсь в этом вопросе.
Но почему ошибки нет в прогах без MFC? Там не исп-ся msvcrt.lib?
Если я права, то получается выхода два — либо взять новую версию Oracle, либо старую MSVC?