T
hi
Ich muss eine DLL schreiben die eine OggVorbis Audio Datei abspielt.Ich bekomme allerdings gleich beim initialisieren des Ogg Vorbis Codecs einen Speicherzugriffsfehler der nicht auftritt wenn ich es als eigenständige Anwendung kompiliere oder wenn ich die entsprechende Anweisung rausschmeisse.
Die .lib und .dll Dateien des codecs habe ich zum kompilieren meiner library zur verfügung. Dem Clientprogramm stelle ich danach meine library, die dazugehörige eigene lib datei und die dlls des codecs zur verfügung. Zum kompilieren des client programm brauche ich die .lib dateien des codecs nicht mehr oder?
Jetzt habe ich gelesen das ich genau wie dllexport mit dllimport funktionen aus anderen librarys "importieren" muss. (Warum ich das in normalen Anwendungen die dlls benutzen nicht machen muss hab ich allerdings nicht verstanden.) Nur kann ich ja nicht einfach in den headern des codecs mit compileranweisungen rumbasteln... Wie kann ich das Problem lösen?
#pragma comment(lib,"ogg.lib")
#pragma comment(lib,"vorbis.lib")
#pragma comment(lib,"vorbisfile.lib")
#pragma comment(lib,"vorbisenc.lib")
#include <vorbis/codec.h>
#include <ogg/ogg.h>
#include <vorbis/vorbisenc.h>
#include <vorbis/vorbisfile.h>
#include <iostream>
#include <fstream>
extern "C" __declspec (dllexport) int SDAudioOpen();
int SDAudioOpen()
{
FILE *f;
f = fopen("test.ogg","rb");
if(f)
{
OggVorbis_File oggFile;
//Hier tritt der Speicherzugriffsfehler auf:
ov_test(f, &oggFile, NULL, 0);
}
return 0;
}