質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Lua

Luaは、汎用のスクリプト言語の一つで、 移植性が高く、高速な実行速度などの特徴を持ち 手続き型・オブジェクト指向言語としても利用可能で 関数型言語、データ駆動型の要素も併せ持っている言語です。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

解決済

2回答

2859閲覧

C++へのLuaシステム実装に関して

Iwan

総合スコア35

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Lua

Luaは、汎用のスクリプト言語の一つで、 移植性が高く、高速な実行速度などの特徴を持ち 手続き型・オブジェクト指向言語としても利用可能で 関数型言語、データ駆動型の要素も併せ持っている言語です。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

0クリップ

投稿2016/10/26 11:48

編集2016/10/26 12:04

###前提・実現したいこと
初めまして。
C++&DXライブラリ環境にLuaスクリプトシステムを実装しようとしているのですが
以下のエラーが解決できず質問させて頂きました

ご教授の程、何卒宜しくお願いします

###発生している問題・エラーメッセージ

エラー 1 error LNK2019: 未解決の外部シンボル _luaL_openlibs が関数 "bool __cdecl advLua_FileLoad(char *)" (?advLua_FileLoad@@YA_NPAD@Z) で参照されました。 D:\project\Application\PC_01\project\LuaScript.obj PC_01
エラー 2 error LNK2019: 未解決の外部シンボル _luaL_loadfilex が関数 "bool __cdecl advLua_FileLoad(char *)" (?advLua_FileLoad@@YA_NPAD@Z) で参照されました。 D:\project\Application\PC_01\project\LuaScript.obj PC_01
エラー 3 error LNK2019: 未解決の外部シンボル _luaL_newstate が関数 "bool __cdecl advLua_FileLoad(char *)" (?advLua_FileLoad@@YA_NPAD@Z) で参照されました。 D:\project\Application\PC_01\project\LuaScript.obj PC_01
エラー 4 error LNK1120: 3 件の未解決の外部参照 D:\project\Application\PC_01\bin\Debug\PC_01.exe PC_01

###該当のソースコード
(#)include <lua.hpp>
typedef struct ADV_LUA_SCRIPT
{
/* @param 初期化済み?
/
bool bIsInit_;
/
@param
/
int nCase_;
/
@param Lua管理ハンドル
*/
lua_State * pLuaHandle_;

} *LPADV_LUA_SCRIPT;

static ADV_LUA_SCRIPT * g_pLuaData = NULL;

//==================================================//
/*
Luaスクリプトファイル読み込み
/
//==================================================//
inline bool advLua_FileLoad( char * szScript )
{
// メモリ確保
g_pLuaData = ( ADV_LUA_SCRIPT
)malloc( sizeof( ADV_LUA_SCRIPT ) );
if( g_pLuaData == NULL )
{
}

ADV_LUA_SCRIPT * pLua_ = g_pLuaData; if( pLua_ == NULL ){ return( false ); } // Luaライブラリの開始 pLua_->pLuaHandle_ = luaL_newstate(); if( pLua_->pLuaHandle_ != NULL ) { // Lua の標準ライブラリ関数を使えるようにする luaL_openlibs( pLua_->pLuaHandle_ ); } // Luaスクリプトファイルの読み込み int nResult = 0; nResult = luaL_loadfilex( pLua_->pLuaHandle_, szScript, NULL ); if( nResult < 0 ) { // Error return( false ); } return( true );

}
bool advLua_ScriptLoad( int nIndex, int nFileIndex )
{
// ファイルパスを取得
char szFilePath[ 256] = "";

// 実読み込み bool bData = false; bData = advLua_FileLoad( "project/Lua/Sample.lua"); if( bData ) { // 成功:読み込めた return( true ); } // 読み込み失敗 return( false );

}

###試したこと
ソリューションのプロパティの以下の設定は行ってあります
・C/C++ → 追加のインクルードディレクトリ → ”Luaのインクルードフォルダのパス”
・リンカ → 全般 → 追加のライブラリディレクトリ → ”libファイルの置いているパス(Lua52.lib)”
・リンカ → 入力 → 追加の依存ファイル → "Luaのlibファイル名(Lua52.lib)”

###補足情報(言語/FW/ツール等のバージョンなど)
Windows7 64bit
Visual Studio2013
DXライブラリ:DxLib_VC3_16f
Luaバージョン:lua-5.2.3_Win64_vc12_lib
https://ja.osdn.net/projects/sfnet_luabinaries/releases/#

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こんにちは。

「LNK2019: _luaL_openlibs 」で検索すると、こんなQAがでてきました。
64ビットビルドされたLua52.libを32ビット・ビルドしたアプリへリンクしようとして同じエラーがでているようです。
アプリを64ビット・ビルドしているか確認してみてください。
Visual C++ プロジェクトを 64 ビット プラットフォーム用に設定するに手順が書かれてます。

投稿2016/10/26 12:49

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Iwan

2016/10/29 11:11 編集

教えて頂いた点を確認したところ、仰る通りアプリケーションは32ビットで64ビットビルドされていませんでした。 そもそも32ビットと言うことを忘れ64ビット用ライブラリを使用している根本のミスに気づきませんでした 64ビットビルドを行う方法と32ビット用のLuaライブラリを使用する2方法で解決する事を確認しました 教えて頂きありがとうございました
guest

0

https://www.lua.org/manual/5.2/readme.html#other
に書いてあるように、あなたのプロジェクトに
Luaのソースの中から library:に書かれているソースをすべてコンパイル対象として追加するのが手っ取り早いかと思います。

投稿2016/10/29 02:43

satoren

総合スコア109

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Iwan

2016/10/29 11:15

ドキュメントは見ていなかったのでその方法は知りませんでした 早速試してみたいと思います 教えて頂きありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問