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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

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

Lua

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

DXライブラリ

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

Q&A

解決済

1回答

3840閲覧

DXライブラリを使ったゲームにLuaを組み込む

yaeyama

総合スコア57

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

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

Lua

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

DXライブラリ

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

0グッド

1クリップ

投稿2016/06/09 13:40

###前提・実現したいこと
DXライブラリを使ったゲーム開発で、Luaを使いたいと思い、
とりあえずtest.luaから変数valの値を取得して表示しようとしたのですが、
何かを二重定義しているみたいでエラーになってしまいます。

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

1>------ ビルド開始: プロジェクト:LuaDXTest, 構成:Debug Win32 ------ 1> main.cpp 1> LuaLib.lib(lstate.obj) : MSIL .netmodule または /GL を伴ってコンパイルされたモジュールが見つかりました。/LTCG を使用して再開始してください。リンカーのパフォーマンスを向上させるためには、コマンドラインに /LTCG を追加してください。 1>LINK : warning LNK4075: /INCREMENTAL は /LTCG の指定によって無視されます。 1>main.obj : warning LNK4075: /EDITANDCONTINUE は /OPT:LBR の指定によって無視されます。 1>MSVCRT.lib(MSVCR120.dll) : error LNK2005: _strncmp は既に LIBCMTD.lib(strncmp.obj) で定義されています。 1>MSVCRT.lib(MSVCR120.dll) : error LNK2005: _strchr は既に LIBCMTD.lib(strchr.obj) で定義されています。 1>MSVCRT.lib(MSVCR120.dll) : error LNK2005: _longjmp は既に LIBCMTD.lib(longjmp.obj) で定義されています。 1>LINK : warning LNK4098: defaultlib 'MSVCRT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 1>C:\Users\xxx\Desktop\LuaDXTest\Debug\LuaDXTest.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

###該当のソースコード

c++

1#include <DxLib.h> 2#include "lua.hpp" 3 4int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){ 5 SetDoubleStartValidFlag(TRUE); 6 //SetOutApplicationLogValidFlag(false); //ログ出力しない 7 ChangeWindowMode(TRUE); 8 DxLib_Init(); 9 SetDrawScreen(DX_SCREEN_BACK); 10 SetWindowSizeChangeEnableFlag(true); //ウィンドウサイズを自由に変更できる 11 SetAlwaysRunFlag(TRUE); //ウィンドウがノンアクティブでも実行 12 13 int val=0; 14 15 lua_State *L = luaL_newstate(); 16 17 // Luaファイルを開いて読み込み 18 if (luaL_dofile(L, "test.lua")) { 19 printf("%s\n", lua_tostring(L, lua_gettop(L))); 20 lua_close(L); 21 return 0; 22 } 23 24 lua_getglobal(L, "val"); 25 26 val = (int)lua_tonumber(L, 1); 27 28 lua_pop(L, lua_gettop(L)); 29 30 lua_close(L); 31 32 // while(裏画面を表画面に反映, メッセージ処理, 画面クリア, キー更新) 33 while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0){ 34 35 DrawFormatString(0, 0, GetColor(255, 255, 255), "%d", val); 36 37 } 38 39 DxLib_End(); // DXライブラリ終了処理 40 return 0; 41}

test.luaは下の一行のみです。

lua

1val = 10

###補足情報(言語/FW/ツール等のバージョンなど)
VC2013
Luaは5.3.2です

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

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

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

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

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

guest

回答1

0

ベストアンサー

LuaLib.libはどのように作成しましたか?
エラー内容からはLuaLib.libはReleaseでビルドしたものを使用していて、それをDebugビルドしたプログラムに組み込んでいるため発生しているように推測されます。
よって、Debugビルド時はDebugビルドで作成したLuaLib.libを、Releaseビルド時はReleaseビルドで作成したLuaLib.libをリンクすることによって解決するものと思われます。

ここからは余談ですが
私はプロジェクトのターゲット毎のビルドの設定を行うよりLuaをビルドするほうが簡単なので、
Luaのスタティックライブラリを作成するプロジェクトを作成してそれを参照するようにしています。

Luaのビルドはソースディレクトリにあるlua.cとluac.c以外のソースコードをビルドすればよいだけです。
スタティックライブラリのプロジェクトの作成方法は以下を参考にしてください。
https://msdn.microsoft.com/ja-jp/library/ms235627(v=vs.120).aspx

投稿2016/06/09 23:40

satoren

総合スコア109

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

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

yaeyama

2016/06/10 07:44

張っていただいたリンクのやり方通りにプロジェクトを作った後 プロジェクトのプロパティ->Debug->c/c++->コード生成->ランタイムライブラリをマルチスレッドデバッグ(/MTD)に Releaseにして先程と同じ項目をマルチスレッド(/MT)にしてビルドしたものを使ったらうまくいきました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問