Ressourcen unter Dev-c++

Hi, also ich habe vor mit dev-c++ programme zu schreiben in denem im hintregrund musik läuft, die musik soll aber als ressourcen mitgelinkt werden. nur ich finde ums verrecken nicht wie man mit ressourcen unter dev-c++ umgeht geschweige denn wie man sie benutzt.

Wenn jemand weiß wie es mit ner anderen IDE funzt, bitte name + kleine anleitung schreiben.

Ich möchte letzendlich nur wissen wie ich ressourcen (musik,bilder, etc pp) mitlinken lassen kann und die im programm auch verwenden kann. (das abspielen bekomm ich noch alleine geregelt...


ich hoffe dazu weiss jetzt mal jemand was.


mfg smash

PS: zwecks keygens schreiben (im hintergrund soll nen modchip laufen) algos etc pp sind vorhanden...)
 
Genau weiß ich das nicht, denke dass du das außerhalb der IDE bzw. per angepasstem makefile machen musst. Vlt. ist die CodeBlocks IDE da besser?
 
Ja also ich würde dir auch ganz stark von DevC++ abraten. Nimm lieber was anderes, ganz egal was. (VC Express 2005, Codeblocks, MingW-Studio,...)
Ich musste einmal so quasi gezwungenermaßen ein Projekt mit DevC++ abwickeln... nie wieder, das Ding ist sowas von verbuggt...
 
von mir aus nehme ich auch gerne eine andere IDE, mir eigentlich wurst, sie sollte das arbeiten mit ressourcen ermöglichen und genau dafür brauche ich auch eine anleitung.


mfg

PS: dev-c++ war halt das erste und das ist bis heute iegentlich so geblieben...
 
Du programmierst dann reine WinAPI nehme ich mal an, oder?
Weil dann solltest du mit dem VC 2005 Express gut bedient sein. KAnnst kostenlos von der MS HP runterladen. Soweit ich weiß kannst da auch ganz normal in nem Ressourcen-Editor deine ganzen Ressourcen verwalten. Geht zumindest in den Professional-Editions, aber ich denke dass das auch mit der Express Edition geht.
 
ahhhhhhhh, nach langem, abe rauch sehr langem googln hab ich es gefunden, nunja jetzt kann ich schonmal dateien mitlinken :>

nun, trotzdem danke für deine hilfe, ich habs mit mingw studio probiert und da habe ich den ressource editor gefunden, mit dem ich dann letzendlich gerafft habe wie es funktioniert, wobei es mit dev-c++ auch funzt (fehlerfrei und sogar kleienr als bei mingwstudion)

achja, was ich bei mingw studio nicht verstehe, ist wenn man nen stadart programm macht:

#include <stdio.h>

int main()
{
printf("hallo\n");
return 0;
}


das ergibt nur ne leere zeile wenn man das prog startet, naja egal unter dev-c++ funzt es auch einwandfrei, ich bin zufrieden.

danke nochmal!
 
Naja soweit ich weiß benutzen beide genau den selben Compiler unter der Haube (GCC Port). Sind wohl nur unterschiedliche Compilervoreinstellungen.

Warum dein Minimalprog ne leere Zeile ergibt, keine Ahnung. Hab MingW damals auch nur bisschen getestet, aber da hat das alles funktioniert. Btw nur mal so am Rande, wenn du C++ programmierst, solltest du auch die neuen Header nehmen, d.h. anstelle von #include <stdio.h"> => #include <cstdio>

Wie gesagt, ich kann dir nur nochmal von DevC++ abraten. Mal ganz davon abgesehen, dass das die Features (Syntaxhighlighting, Auto-Completion, etc...) sowieso fürn Arsch sind (kann jeder andere IDE Imho besser), ist das Ding auch total verbuggt.
Debuggen hat bei mir z.B. auch nie richtig funktioniert.
 
ach sorry, ich meine code::blocks, da hat das standart prog net gefunzt, bei mingw studio funzt alles einwandfrei (ist trotzdem nen bisschen größer, wobei mir das syntax highlighting besser gefällt und son paar optionen)

Hier, wo wir den Thread schonmal offen haben, wollte ich mal wissen wie ich jetzt die mitgelinkten resourcen verwenden kann, um genau zu sein zu entpacken.

Ich habe da auch einen Code geschrieben:

bla.rc
Code:
ID_MOD_02 CUSTOM "02.MOD"

resource.h
Code:
#define ID_MOD_02 1


main.c
Code:
#include <windows.h>
#include <conio.h>

#include "resource.h"

int ExtractReSrcFile();

int main()
{
    ExtractReSrcFile();

    //while(!kbhit());
    return 0;
}

int ExtractReSrcFile()
{
    HRSRC hSrcFile = FindResource(GetModuleHandle(0), MAKEINTRESOURCE(ID_MOD_02), "CUSTOM");
    if(hSrcFile != 0)
    {
        HGLOBAL hSrcFileLoad  = LoadResource(GetModuleHandle(0), hSrcFile);
        void*   pvSrcFileData = LockResource(hSrcFileLoad);
        size_t  stSrcFileSize = SizeofResource(GetModuleHandle(NULL), hSrcFile);
        HANDLE hReSrcFile    = CreateFile("C:\\lol.mod", GENERIC_WRITE, FILE_SHARE_READ,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
        WriteFile(hReSrcFile, pvSrcFileData, stSrcFileSize,0,0);
        CloseHandle(hReSrcFile);
    }
    return 0;
}

der fehler liegt meines wissens in der funktion

Code:
FindResource(GetModuleHandle(0), MAKEINTRESOURCE(ID_MOD_02), "CUSTOM");

weil, wenn ich aus dem

Code:
if(hSrcFile != 0)
ein
Code:
 if(hSrcFile == 0)
mache, versucht er die datei zu schreiben (wobei der inhalt fehlt, was wohl daran liegt, dass die ressource nicht gefunden wurde.

Mitgelinkt wird sie auf jeden Fall, weil die .exe file um die größe der resource wächst und mit ressourcehacker die file sichtbar und entpackbar ist.

Ich hoffe, Du, bzw jemand anderes, weiss wie ich das hinbekommen kann.


mfg .smash
 
Was sagt GetLastError? Wie ist die Ressource definiert?
Außedem kenne ich kein "CUSTOM" bei FindRessource (falls hier die WinAPI und kein Wrapper genutzt wird), sondern nur ein RT_RCDATA für "RawData" .
 
öhm, wie finde ich das raus mit getlasterror?
und wie muss ich das mit RT_RCDATA bzw "RawData" machen?

sorry,von winapi hab ich wie gesagt bis auf winsock sogut wie keinen blassen schimmer.

mfg
 
GetLastError gibt dir nen Wert zurück, der dir (manchmal) dabei helfen kann herauszufinden was genau schief ging. Guckst du einfach MSDN (könnte dir vielleicht nützlich sein):

http://msdn2.microsoft.com/en-us/library/ms680582.aspx

http://msdn2.microsoft.com/en-us/library/ms680746.aspx

Naja und zu dem FindResource, musst auch nur in MSDN schauen:

http://msdn2.microsoft.com/en-us/library/ms648042.aspx

Da ist auch ne Auflistung über Resource-Typen, d.h. du soltest dein "Custom" am Ende einfach mal durch RT_RCDATA ersetzen.
 
Sorry, da muss ich passen, ich habe auchnicht die Zeit WinApi zu lernen, ich brauche "nur" die Funktion, um mitgeklinkte Ressourcen zu entpacken.

wenn ich mein "Custom" in RT_RCDATA umändere, geht es leider tortzdem nicht
und wie ich getlasterror auf die schnelle da einbauen soll weis ich auchnicht.

Leute, ich bin schon seit mehrere Tagen dabei um zu suchen/auszuprobieren wie man Ressourcen mitlinkt (das hat schon 2 tage gedauert (dreck dev-c++) und die Ressourcen verwendet/auspackt (bis dato nicht geschafft),

Sorry das ich einfach so dreist Frage, aber langsam bin ich entnervt, aber kann mir vllcht Jemand ein einfaches Beispiel schreiben (mir .rc und ressource.h) wie man nun die mitgelinkten Ressourcen verwendet/entpackt?

Ich wäre sehr dankbar.


mfg .smash
 
Bei mir funktioniert das:

Code:
void Print(int channel, char *format, ...)
{
  static char fn[] = "printx.txt";
  FILE *fp;

  fn[5] = (char)('0'+(channel%10));
  if (format == 0)
    { unlink(fn);
      return;
    }
  if ((fp = fopen(fn, "at")) == 0)
      return;
  vfprintf(fp, format, (char *)(&format+1));
  fclose(fp);
}

void UnlinkPrint(void)
{
  int i;

  for (i = 0; i < 10; i++)
      Print(i, 0);
}

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char *CmdLine, int nShow)
{
  HRSRC xx;
  int fehler;

  UnlinkPrint();
  
  xx = FindResource(0, MAKEINTRESOURCE(101), RT_DIALOG);
  fehler = GetLastError(); // nicht hilfreich, meldet auch bei Fehler 0
  Print(0, "xx %i fehler %i\n", xx, fehler);

  return 0;
}
 
So, mit deinem Prog bekomme ich immer den Fehler 1813.

Code:
Fehler 1813
Der angegebene Ressource-Typ wird in der Imagedatei nicht gefunden.

So, ich weiss ja nicht was der mit "in der Imagedatei" will wenn ich musik (chiptune) die ne .mod datei ist gelinkt habe... :/

woran das jetzt wieder liegt weis ich acuhnicht...


och menno ich will doch nur ein einfaches programm zum entpacken der gelinkten resourcen haben, mehr net...

mfg


//EDIT: So, jetzt gehts, man muss einfach in der .rc file die resource.h includen.... -_-"
 
Zurück
Oben