Двоичный дистрибутив Lua, предназначенный для динамической компоновки в Windows, должен поставляться с двумя двоичными файлами:
- файл DLL с актуальным кодом Lua
- файл библиотеки с делегированием заглушек метода в DLL
Иногда файл библиотеки будет иметь расширение .a
, что более распространено в Linux (в отличие от .lib
в Windows). Однако, если это сборка Windows, вы можете просто передать этот файл как зависимость компоновщика, и он будет работать нормально. Этот вопрос касается различий между двумя конвенциями.
В качестве дополнительного примечания, чтобы заставить его работать, если вы создадите проект C ++ в Visual Studio и добавите Source.cpp
, как это предлагается по умолчанию, вы все равно получите неразрешенные внешние компоненты. Это связано с тем, что хотя исходники C компилируются в виде кода C ++ просто отлично, компоновщик будет ожидать искаженных имен для определений используемых функций C. Этого можно избежать, скомпилировав файл в виде кода на C, или, предпочтительно, сообщив ему, что имена из заголовков Lua должны быть разобраны в связанной библиотеке с помощью extern "C"
:
extern "C" {
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
#include <stdlib.h>
#include <stdio.h>
}