Это первый раз, когда я пытался использовать сборку релиза с Visual C ++ 2005, и, похоже, есть определенные различия.
Моя текущая ошибка:
Unhandled exception at 0x6ef7d628 (msvcr80d.dll) in <program_name>:
0xC0000005: Access violation reading location 0x6c2e6769.
Я заглядываю в стек вызовов, и получается, что строка, переданная в функцию статической библиотеки, которую я сделал, дает "Плохой Ptr", и я понятия не имею почему. Прекрасно работает в отладочной сборке ...
Вот такая строка:
int main()
{
static Script luaScript("config.lua");
Script - это просто класс, который я создал, который обрабатывает файлы сценариев lua. Он статический, потому что я хочу, чтобы он был одноэлементным, чтобы любой код мог получить к нему доступ.
Конструктор Script:
Script::Script(const string &filename)
{
luaState = lua_open();
scriptFilename = filename; // unhandled exception occurs here; Intellisense
// identifies filename as a <Bad Ptr>
// works perfectly fine in debug
}
Я думаю, что это может быть потому, что библиотека тоже находится в режиме отладки, но я не могу заставить ее скомпилировать, когда я пытаюсь использовать Release.
fatal error C1010: unexpected end of file while looking for precompiled header.
Did you forget to add '#include "stdafx.h"' to your source?
Я немного знаком с этим файлом, но зачем он мне нужен для сборки Release моей статической библиотеки? Не просил об этом в Отладке.
Хорошо, иди, возьми файл stdafx.h и ... появилась новая ошибка!:
fatal error C1083: Cannot open precompiled header file:
'Release\Script.pch': No such file or directory
Ну, довольно сложно найти центральный вопрос для всего этого, кроме: «Что в мире Visual C ++ 2005 хочет, чтобы я делал для сборок Release!?».
Я надеюсь, что кто-то может помочь. Спасибо.