Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.12.2008, 15:57

Lua und C++

Hi Forum!
Ich möchte mit meinem C++ Programm ein Luascript ausführen.
Dazu binde ich am Anfang ein paar Headerdateien ein:

C-/C++-Quelltext

1
2
3
4
5
extern "C" {
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
}

Mein erstes Problem war schonmal, dass ich diese Header nicht hatte. Nach langem Suchen hab ich sie dann endlich mal gefunden, aber leider bekomm ich Fehler:

Quellcode

1
2
3
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_lua_getfield" in Funktion ""public: void __thiscall Agent::init(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?init@Agent@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)".

error LNK2005: __cexit ist bereits in MSVCRTD.lib(MSVCR90D.dll) definiert.

Von diesen beiden Arten bekommen ich ziemlich viele (35). Dieses "Verweis auf nicht aufgelöstes externes Symbol" kommt doch, wenn man eine Funktion aufruft, von der man nur eine Deklaration hat?
Dachte ich mir, dass es eigentlich klar ist, schließlich hab ich nur Headerdateien eingefügt. Also hab ich mir noch die passenden C-Files besorgt (waren beide in einem Paket).
Die Headerdateien hab ich in den Ordner eingefügt:
C:\Programme\Microsoft Visual Studio 9.0\VC\include
Wohin müssen die *.c?
Ich habs mal in
C:\Programme\Microsoft Visual Studio 9.0\VC\crt\src
versucht, aber das hilft nichts.

Meine Headerdateien sind übrigens:
- lua.h
- lauxlib.h
- lualib.h
- luaconf.h

Fehlt mir etwas? Woran könnte der Fehler liegen? Hat jemand von euch schonmal auf diese Weise Lua verwendet?
Bin für jede Hilfe dankbar.

2

25.12.2008, 18:01

oO, wo hast du die Header den "gefunden"? Lagen die einfach so auf der Platte rum?

Also ich hab mir damals einfach mal den gesamten Lua Quellcode runtergeladen, ein Projekt erstellt, alle Dateien eingefügt und das ganze als Bibliothek kompiliert. Das ging sehr sehr einfach, das es IMO keine sonstigen Abhängigkeiten bei Lua gibt. Du musst dann natürlich auch die richtigen Dateien Linken, je nachdem, wie du es kompiliert hast.
Lieber dumm fragen, als dumm bleiben!

3

25.12.2008, 19:12

Zitat

oO, wo hast du die Header den "gefunden"? Lagen die einfach so auf der Platte rum?

:lol: Nein, hab sie mir hier heruntergeladen, das neueste (5.1.4): http://www.lua.org/download.html
Das dürfte wie bei dir der gesamte Lua Quellcode sein, oder? Dann versuch ichs mal, hab noch nie etwas als Bibliothek kompiliert. Soll ich dann nichtmehr die Header includen, sondern nur noch die Libs verwenden?
Ich könnte (werde vermutlich) zuerst mal versuchen, ob es vielleicht funktioniert, wenn ich die verwendeten Dateien direkt zum Projekt hinzufüg.
Danke.

4

25.12.2008, 19:24

Ja, direkt zum Projekt hinzufügen ist halt das einfachste, einfach so tun, als hättest du die .h und .c Dateien selber geschrieben.
Das ganze als Lib zu kompilieren und in deinem eigentlichen Projekt nur zu linken, hat halt ein paar Vorteile, Übersicht und Kompilierzeit und so aber läuft ja letztendlich auf das selbe hinaus.
Lieber dumm fragen, als dumm bleiben!

5

25.12.2008, 19:53

Die Variante mit der lib funktioniert! Danke nochmals!

Werbeanzeige