Création DLL en mode Release

cs_Argile92 Messages postés 29 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 30 mars 2009 - 17 mars 2009 à 12:39
cs_TTX Messages postés 2 Date d'inscription lundi 9 août 2004 Statut Membre Dernière intervention 3 mai 2012 - 3 mai 2012 à 16:28
Bonjour,

Je developpe une application Excel qui utilise des fonctions C++ via une DLL.

J'ai dans un premier temps fais ma DLL en mode DEBUG, aucun problème!

Pour des soucis de rapidité, j'ai recompilé ma DLL en mode Release: pas d'erreur au compilage.
Malheureusement, je rencontre un problème lors de l'exécution...
Je ne comprends pas pourquoi.

Dois-je modifier certains paramètres??

Merci beaucoup

4 réponses

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
17 mars 2009 à 14:04
salut,

C'est jamais simple de savoir pourquoi ca plante dans un mode et pas dans l'autre. Généralement en debug les zones mémoires sont initialisées à 0xcccccc.... ou autre suivant les compilo. Et quelque fois on a des surprises en Release (expérience perso :)). Avec une mémoire mal initialisée, le test est vrai en Debug et faux en Release.

Tu n'as pas d'erreur, mais as-tu regardé attentivement la description des warning ?

Essaie de compiler en Release avec les infos de Debug, ca peut peut-etre d'aider.
0
cs_Argile92 Messages postés 29 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 30 mars 2009
19 mars 2009 à 10:06
Salut,

Il n'y a pas de Warning...

Sinon, autre chose de très étrange: j'ai compilé ma DLL en mode release, puis appelé via VBA.
1er tour: pas de problème, c'est rapide et ça marche
2e tour: Excel plante lors de l'appel de la DLL...

Donc je recommence:

1er tour: pas de problème et je stop manuellement ma fonction
2e tour: Excel n'arrive plus à trouver la DLL... j'ai beau compiler et recompiler, Excel ne retrouve plus la DLL.

Problème dans les parametres de compilation?

Merci beaucoup !
0
cs_TTX Messages postés 2 Date d'inscription lundi 9 août 2004 Statut Membre Dernière intervention 3 mai 2012
3 mai 2012 à 15:52
Je relance le sujet. J'ai fais une DLL en C++ à partir de visual C++ express que j'ai compilé en version release. Sur la majorité des ordinateurs que je teste mon DLL ça fonctionne, mais sur certains ça seul une version compilé en debug fonctionne.

Est-ce que ça aurait un rapport avec le compilateur express, une option de compilation, une config particulière de l'ordinateur récalcitrant (en Vista) ou autre chose?

Merci
0
cs_TTX Messages postés 2 Date d'inscription lundi 9 août 2004 Statut Membre Dernière intervention 3 mai 2012
3 mai 2012 à 16:28
Juste pour compléter.

visual C++ express 2008
ordinateur récalcitrant (en Vista pro 32 bits)

Mon code très simple:
Configuration release
Bibliothèque dynamique (.dll)
Bibliothèque runtime DLL multithread (/MD)
#pragma once
#include "WebService.h"
using namespace System;

extern "C" __declspec(dllexport) const int Verif_MJ(char* cVersion,char* cID,char* cProp,char* cPostal)
{
String^ strVersion = gcnew String(cVersion);
String^ strID = gcnew String(cID);
String^ strProp = gcnew String(cProp);
String^ strPostal = gcnew String(cPostal);
Service_LLS::LLSService serv;
return serv.compare_version(strVersion,strID,strProp,strPostal);
}
0
Rejoignez-nous