Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Embarquer une dll dans un executable [ Archives / Systeme ] (MetalDwarf)

vendredi 23 avril 2004 à 17:15:46 | Embarquer une dll dans un executable

MetalDwarf


Voila je voudrais embarquer une dll dans un executable, c est a dire la mettre en data dans mon fichier source, et la reecrire sur le disque dur a l execution.
Je suis oblige de proceder comme ca, car je veux qu il n y ait qu un seul fichier, et ma dll contient un hook, donc c est impossible a passer dans l exe.

j utilise pour transformer ma dll en data le programme ttbin2hex de la TI Chess Team qui me traduit ma dll en un tableau d entiers, mais dans le mauvais endian (et oui les TI89 c est en big endian, pas les PC...).

Les datas ressemblent a ca :

unsigned long dll_data[768] = {
0x4d5a9000,0x03000000,0x04000000, [...] };

et mon code pour passer d un endian a l autre est cette macro :

#define SWAP_LE_BE_LONG(val) ((long) ( (((long) (val) & (long) 0x000000ffU) << 24) | (((long) (val) & (long) 0x0000ff00U) << 8) | (((long) (val) & (long) 0x00ff0000U) >> 8) | (((long) (val) & (long) 0xff000000U) >> 24)))

Ma fonction pour l ecrire sur le disque dur est :

void write_lib(unsigned long int *data,int size,char *filename)
{
FILE *fd;
int i;

if((fd = fopen(filename,"wb")) == NULL)
return;
for(i=0;i<size;i++)
{
unsigned long tmp;
tmp = SWAP_LE_BE_LONG(data[i]);
fwrite(&tmp,1,4,fd);
}
fclose(fd);
}


Mais ca marche pas!! En fait mon fichier sur le disque dur n est pas le meme que celui en memoire, des 0x00 sont remplaces par des 0xFF.
Pourquoi et que faire??

vendredi 23 avril 2004 à 17:22:57 | Re : Embarquer une dll dans un executable

BruNews

Administrateur CodeS-SourceS
Si tu es sur Visual Studio, insere ta dll en tant que ressource binaire et tu n'auras pas d'inversion des octets a faire.

ciao...
BruNews, Admin CS, MVP Visual C++

vendredi 23 avril 2004 à 17:25:05 | Re : Embarquer une dll dans un executable

MetalDwarf


oui je suis sous Visual C++ 6, mais le probleme c est que mon hok doit etre dans une dll. Est ce que la dll sera reecrite sur le disque au lancement du programme si je la met en ressource binaire?

vendredi 23 avril 2004 à 17:29:02 | Re : Embarquer une dll dans un executable

BruNews

Administrateur CodeS-SourceS
bien sur que non, c'est a toi de l'ecrire, simplissime.
Va voir mon exemple avec un jpg en ressource binaire, tu y trouveras son chargement. Ensuite WriteFile en 1 passe et le tour est joue.

ciao...
BruNews, Admin CS, MVP Visual C++



Cette discussion est classé dans : long, dll, data, fd, embarquer


Répondre à ce message

Sujets en rapport avec ce message

Problème d'interfacage d'une DLL écrite en C++ avec vba [ par pierrinot ] Bonjour, Je dois créer une DLL utilisable par un programme VBA. Je tombe sur un problème d'entête de fonctions. La DLL est bien compilée, mais lorsq returnourner un entier long long [ par dlamalice ] Bonjour,j'ai codé une dll toute bete et j'aimerai que cette dernière me retour un long long (64bit) statique.Mais quand je compile la ligne return ne dll pour vb6 [ par draluorg ] Salut a tous,J'essai de faire une dll en C pour utiliser sous vb6, mais je recois toujours le message "Bad dll Calling Convention" depuis vb6 :(Voici DLL COM et SAFEARRAYS [ par wismerhill__ ] Bonjour, j' essai de trouver un moyen de remplir des arrays/matrices C++ par des arrays/matrices de string/UDT/double VBA, dans le but de faire des op DLL : interface IUnknown en C [ par Mastersam ] Bonjour, je créé actuellement en driver ASIO sous forme de DLL, j'ai eu un exemple général de création d'un driver dans la SDK ASIO 2.2, mais tout est Utilisation d'une DLL dans Excel et Matrices [ par magnetosergio ] Bonjour à tous,Voilà, je vous expose mon problème.Je débute en C++, j'ai appris plutôt rapidement les notions importantes (siteduzero) et je dois main VS2005 DLL GetprocAdress [ par Coolpix08 ] Bonjour a tousVoila je pense que jai bien resumer la situation dans le sujet.Jai un enorme problème! Voila jai créer une DLL avec VS2005, il ma donc c Retrouver le hmodule d'une dll [ par Mastersam ] Bonjour, je créé actuellement une DLL sous VC++, je dois charger une image en ressource dans cette dll avechbitmap=(HBITMAP) LoadImage(hInst,"CP_BGBIT #pragma data_seg et GCC [ par clempar55 ] Bonjour à tous. Je suis tombé il n'y a pas longtemps sur ce code (pourait grandement m'aider pour un de mes projet) et j'ai essayé de le co interface graphique GTK [ par ifitep84 ] bonjour à tous j'ai un ptit souci avec mon programme .en somme j'ai construit une interface graphique sous glade qui utilise GTK . Dans mon interfac


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.