Forum Clubic

Création de dll C avec Visual Studio 2005 en mode Release

Bonjour,

Dans Visual Studio, il y a deux modes de compilation : Release et Debug.
Lorsque je crée une application console, j’utilise habituellement le mode Debug jusqu’à la version stable (ou finale) pour me permettre d’utiliser le “Debugage temps réel” correctement.
Quand je décide que mon application est nickel, je passe en mode Release et je compile un EXE dans ce mode. Ceci permet d’alléger le fichier exécutable et d’accélérer son “exécution”.

Du coup, j’ai voulu faire la même chose en créant ma DLL (je rajoute un main() dans le projet pour pouvoir directement exécuter les fonctions de ma DLL). J’ai travaillé sur un EXE en mode Debug pendant toute la durée de l’implémentation, pour finalement créer une DLL en mode Debug et la tester sur mon logiciel programmé en VB.net. Jusque là, pas de souci.

Pour faire les choses correctement, après quelques tests concluants sur l’appli VB, je décide de créer une DLL en mode Release vu que tout à l’air de fonctionner. Le fichier est comme prévu plus léger sur le disque, mais aucune des fonctions de ma nouvelle DLL mode Release ne semble fonctionner dans mon programme VB.

Est-ce normal ou ai-je loupé quelque chose?

Merci.

normal:non
loupé quelquechose:c’est sûr

pour t’aider il faut regarder du côté des options de compilation/link en mode release et voir s’ils sont identiques au mode debug (mis à part les flags de debug).

Sinon rien ne t’empeche de désactiver les flags debug et de mettre les optimisations dans ton build Debug :wink:

Et tu dis que rien ne marche, tu as des erreurs?

Non, je ne détecte pas d’erreur de segmentation ou autre problème de ce type.

Les fonctions de ma DLL C sont pleines de vérifications et renvoient toutes un int : “Tout c’est bien passé” (1 pour oui, 0 pour non).
En compilant en mode Debug je reçois 1, alors qu’en compilant en mode Release je reçois 0.

Ca sent le problème mémoire non signalé à plein nez.
Du coup je ne vois pas pourquoi ca passerait dans un mode et pas dans l’autre.
Mais si tu me dis qu’on peut faire les DLL en mode Release tout à fait normalement, je vais étudier cela.

Merci, je me penche là dessus dès que je peux (pas tout de suite, je suis à la bourre sur mon plannig).

Bon, ça a l’air de fonctionner.

Ca devait être une erreur genre “erreur de segmentation” pas détectée en mode Debug et qui fusille mes résultats en mode Release, sans bloquer le code (sans lever d’exception).
J’ai déjà eu ça avec Visual Studio 2005…

Merci.