Связывание Lua с Visual Studio 2010 - PullRequest
4 голосов
/ 02 октября 2010

Мы используем скрипт Lua (www.lua.org), чтобы позволить пользователям настраивать наше серверное программное обеспечение, написанное на C ++.

В настоящее время мы переносим 32-битную версию нашего проекта для Windows на Visual Studio 2010. После того, как все хорошо работает с VS 2008, мы подумали, что у нас не возникнет проблем с процессом обновления.

К сожалению, всякий раз, когда мы пытались связать lualib (как dll) с нашим проектом в VS 2010, компоновщик не мог найти функции lua (сообщения об ошибках показаны ниже).

Кажется, что некоторые соглашения о вызовах неверны в 2010 году, например, приложение может искать функции lua с префиксом '_'.

Для доступа к функциям lua (написанным на C) из модулей нашего проекта (C ++) мы используем это:

extern "C" {
#include "lua/src/lua.h"
#include "lua/src/lualib.h"
#include "lua/src/lauxlib.h"
}

Тот же проект успешно компилируется и связывается с lualib в VS 2008 и Linux (g ++).

Может ли кто-нибудь помочь мне с этим?

1>dscscript.obj : error LNK2019: unresolved external symbol __imp__luaL_openlibs referenced in function "public: int __thiscall DsCScriptEngine::Init(void)" (?Init@DsCScriptEngine@@QAEHXZ)

1>dscscript.obj : error LNK2019: unresolved external symbol __imp__luaL_newstate referenced in function "public: int __thiscall DsCScriptEngine::Init(void)" (?Init@DsCScriptEngine@@QAEHXZ)

1>dscscript.obj : error LNK2019: unresolved external symbol __imp__lua_close referenced in function "public: void __thiscall DsCScriptEngine::Shutdown(void)" (?Shutdown@DsCScriptEngine@@QAEXXZ)

1>dscscript.obj : error LNK2019: unresolved external symbol __imp__lua_pcall referenced in function "public: long __thiscall DsCScriptEngine::Execute(char const *)" (?Execute@DsCScriptEngine@@QAEJPBD@Z)

и т.д.

1 Ответ

4 голосов
/ 02 октября 2010

Сообщенные пропущенные имена верны, это не проблема компиляции. Вы, должно быть, ссылаетесь не на тот .lib. Название, которое вы используете, звучит неправильно, это не «lualib», текущая версия библиотеки импорта называется lua5.1.lib (или lua51.lib, но я не уверен, в чем разница). Загрузите его отсюда .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...