Fehler bei C/C++ Videorandom Tool

Darian

Erfahrenes Mitglied
Hallo Leute,

bin ja nicht so der C/C++ Profi, da ich sonst andere Sachen Code.

Aber ich soll ein Programm erstellen was per Zufall aus einem Ordner voller Videos welche auswählt, zufällige 30 Sekunden des Videos spielt, und dann bei einem anderen Video weiter macht.

Ich muss jetzt einfach einen Befehlszeilenbefehl erstellen und ausführen.

Mit vlc sieht das wie folgt aus:

Code:
vlc.exe --fullscreen --loop "D:\MOVIES\filme\video pro
of.avi" :Start-time=100 :Stop-time=110 "D:\MOVIES\filme\death proof.avi" :Start-
time=120 :Stop-time=130

Zum Einstellen des ganzen benutze ich ein config.ini

Code:
vlc="C:\Programme\VideoLAN\VLC\vlc.exe"

delay=30

video_count=10

video_path="D:\videos"

delay ...er spielt 30 sekunden
video_count .... 10 Videos werden per Zufall gewählt (also in Summe 300 Sekunden)
Ich denke der rest ist selbst erklärend.

Ich benutze VC Express 2008 und fürs parsen der config.ini http://sourceforge.net/projects/libini

Alle Files sind im Projekt Ordner die libini.lib libini.dll und die libini.h.

Möchte jetzt eigentlich nur einmal die 4 Werte parsen.

Code:
Code:
#include "libini.h"
#include <iostream>
#include <String>

using namespace std;

int main(int argc, char** args)
{
	//Read config file - config.ini

	int delay, video_path;
	ini_fd_t fd;
	fd = ini_open("./config.ini");
	//Ret = ini_locateHeading(fd, "Section"); // Ret = 0
	delay = ini_locateKey(fd, "delay");
	video_path = ini_locateKey(fd, "video_path");

	cout << delay << endl;

	
	
	return 0;
}

Fehler:
Code:
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_ini_locateKey" in Funktion "_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_ini_open" in Funktion "_main".
1>D:\workspace\visual_i\visual\Debug\visual.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.

Ich habe im VC2008 auch den Ordner wo das .lib ist bei den Bibliothekspfaden angegeben. (aber nachdem es im selben Ordner ist, sollte das doch egal sein)

Bin wie gesagt nicht so der C checker, Code sonst benutzerfreundlichere Sprachen :)

Wäre echt super wenn mir da jemand ein bisschen auf meinem Weg helfen könnte.

lg und danke für alle Infos
Darian
 

Darian

Erfahrenes Mitglied
Hallo und danke für die Antwort, ich habe sie eingetrage:

libini.lib und der Ordner mit den Files ist auch noch allgemein bei den Bibliotheksdatein eingetragen.

Aber noch der selbe Fehler. Hättest du bitte noch weitere infos. Was mache ich falsch?

thx und lg
Darian
 

deepthroat

Erfahrenes Mitglied
Hi.

Definiere das Makro LIBINI_DLL_IMPORT bevor du die libini.h einbindest. Entweder in den Projekteinstellungen oder in der .cpp Datei:
C++:
#define LIBINI_DLL_IMPORT
#include "libini.h"
Gruß
 

Darian

Erfahrenes Mitglied
Hallo,

der Anfang sieht jetzt so aus:

Code:
#define LIBINI_DLL_IMPORT
#include "libini.h"
#include <iostream>
#include <String>

using namespace std;

Fehler:

Code:
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ini_locateKey" in Funktion "_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ini_open" in Funktion "_main".
1>D:\path\to\i\trunk\visual_i\visual\Debug\visual.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.

Sorry, aber leider funktioniert da sonst auch noch irgendwas nicht.

Habe jetzt sogar zur Sicherheit mal ein Bild angehängt :) Nur um eventuell blöde kleine Fehler auszumerzen, und auf Nummer sicher zu gehn...

lg Darian
 

Anhänge

  • option.jpg
    option.jpg
    43,4 KB · Aufrufe: 23

deepthroat

Erfahrenes Mitglied
Hi.

Du mußt noch zusätzlich das Makro _WINDOWS definieren bevor du die libini.h Datei einbindest.

Gruß

PS: Übrigens, sehr schöne Problembeschreibung mit Quelle was du runtergeladen hast, mit vollständigem Minimalbeispiel und Fehlermeldung. So sollte das aussehen. :)
 

Darian

Erfahrenes Mitglied
Hallo, und danke dir, jetzt kompiliert es schon. Das nächste mal weiß ich schon worauf ich in der .h sehen muss, damit ich es selbst hinkriegen würde.

Leider bekomme ich jetzt immer nur ein 0 zurück. Würde mich noch über ein paar Infos freuen, brauchbare Beispiele geschweige den eine Doku habe ich nicht wirklich gefunden.

Code:
#define _WINDOWS
#define LIBINI_DLL_IMPORT
#include "libini.h"
#include <iostream>
#include <String>
#include <windows.h>

using namespace std;

int main(int argc, char** args)
{
	//Read config file - config.ini

	int delay;
	ini_fd_t fd;
	fd = ini_open("./config.ini");
	//Ret = ini_locateHeading(fd, "Section"); // Ret = 0
	delay = ini_locateKey(fd, "delay");
	//video_path = ini_locateKey(fd, "video_path");

	cout << delay << endl;
	system("PAUSE");
	
	return 0;
}

thx und lg
Darian
 

Darian

Erfahrenes Mitglied
Bin jetzt gerade dabei die Videos aus dem Ordner per Zufall auswählen zu lassen.

Ich habe mich für eine Lösung mit FindFirstFile entschieden. Leider kriege ich immer nur komische Sachen zurück. So in der Art => 0012FCE8

Code:
        HANDLE fHandle;
	WIN32_FIND_DATA wfd;

	fHandle=FindFirstFile((LPCWSTR)video_path,&wfd);

	do
	{
		if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))
		{
			if (wfd.dwFileAttributes & FILE_ATTRIBUTE_NORMAL)
			{
				cout << wfd.cFileName << endl;

			}
		}
	}
	while (FindNextFile(fHandle,&wfd));
	
	FindClose(fHandle);

Möchte mir gerne per Zufall eine bestimmte Anzahl aussuchen, Diese zu einem Befehl zusammen bauen, und mit _popen() den Befehl ausführen. Fertig!

Zur Info: cFileName ist ein TChar was wiederrum ein normaler char ist => typedef char TCHAR;

Was da genau los ist weiß ich nicht, irgendwie kommt mir das Win Zeug sowieso komisch vor. :)

Was mache ich also falsch?

thx und lg
Darian
 

Neue Beiträge