Création DLL en mode Release

Signaler
Messages postés
29
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
30 mars 2009
-
Messages postés
2
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
3 mai 2012
-
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

Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
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.
Messages postés
29
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
30 mars 2009

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 !
Messages postés
2
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
3 mai 2012

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
Messages postés
2
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
3 mai 2012

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);
}