Ссылка на V8 не работает в режиме релиза - PullRequest
2 голосов
/ 27 мая 2011

Я собрал библиотеки v8 для Visual Studio 2005 в режиме выпуска, поместил полученные файлы .lib (в режиме выпуска) и скомпилировал свой проект для них.

В то время как все работает нормально в режиме отладки (компилируется и работает правильно), в режиме выпуска я получаю следующие ошибки ссылок (как будто нет файлов lib).

error LNK2001: unresolved external symbol "public: class v8::Local<class v8::Boolean> __thiscall v8::Value::ToBoolean(void)const " (?ToBoolean@Value@v8@@QBE?AV?$Local@VBoolean@v8@@@2@XZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsInt32(void)const " (?IsInt32@Value@v8@@QBE_NXZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsNumber(void)const " (?IsNumber@Value@v8@@QBE_NXZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsBoolean(void)const " (?IsBoolean@Value@v8@@QBE_NXZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsObject(void)const " (?IsObject@Value@v8@@QBE_NXZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsArray(void)const " (?IsArray@Value@v8@@QBE_NXZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsFunction(void)const " (?IsFunction@Value@v8@@QBE_NXZ)
error LNK2001: unresolved external symbol "public: bool __thiscall v8::Value::IsNull(void)const " (?IsNull@Value@v8@@QBE_NXZ)

Мои свойства компоновщика имеют следующие дополнительные зависимости.

msvcrt.lib ntstc_msvcrt.lib Psapi.lib winmm.lib Ws2_32.lib $(SolutionDir)\external_libs\release\v8.lib

и моя папка $(SolutionDir)\external_libs\release содержит файлы:

v8.lib, v8_base.lib, v8_snapshot.lib

Любая помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

В Visual Studio параметры сборки являются отдельными для debug и release сборок. Вы, вероятно, настроили все правильно для режима отладки, но не для режима выпуска, отсюда и ошибки.

Я точно забыл, как все устроено в VS2005, но в VS2008 в верхней части диалогового окна свойств решения есть поле со списком, который позволяет выбирать между отладкой / выпуском / всеми конфигурациями.

Другими словами, вам нужно будет добавить дополнительные зависимости в раздел свойств компоновщика в режиме выпуска. В качестве альтернативы, в будущем внесите все изменения с конфигурацией, установленной на All configurations.

0 голосов
/ 27 мая 2011

Вероятная причина: команда переключает и определяет, что вы использовали для сборки библиотеки v8 не совпадают с теми, которые вы используете для сборки кода, использующего ее.

Кроме того, если вы используете CRT vs2005, вам это не нужно: ntstc_msvcrt.lib

Martyn

...