Bonjour,
je veux ajouter une dll a mon projet , je travail ave c visual Studio 2005, jai fait refferences mais je peux pas ajouter, aidez moi SVP.
Version imprimable
Bonjour,
je veux ajouter une dll a mon projet , je travail ave c visual Studio 2005, jai fait refferences mais je peux pas ajouter, aidez moi SVP.
as-tu ajout� #import "tadll.dll"??
Tu ajoutes le repertoire o� se trouve le .h de ta dll dans le directory des includes et tu ajoutes le repertoire o� se trouve le .lib dans le directory des librairies (linker)
Ensuite dans ton source
Code:
1
2
3 #include "madll.h" <..> fonc_dll();
Ca existe #import "madll.dll" ??? tu as test� ?
moi s'est se que j'ai fait pour la msxml.dll
avec using namespace MSXML2;
mais je sais pas si sa s'applique a tout les dll
ah d'accord
pour cette API, il y'a Netica.dll, et Netica.h, et Netica.lib.Citation:
Envoy� par hegros
jai ajout� #include<Netica.h>
et aussi dans linker->Input-> le chemin de lib
mais quand je fait debug il y'a erreur
1>LINK : fatal error LNK1104: cannot open file 'C:\Documents.obj'
je travail avec Visual Studio 2005 il y'a debug et release qu'elle est la difference?
merci
En debug des informations sont rajout�es pour justement pouvoir d�bugger en mode release non c'est la version cliente
Tu as ajout� comment le .h das le projet ? Tu peux sinon faire un clic droit sous l'arborescence o� se trouve tes fichiers de ton projet et ajout� le .h de la dll et ensuite
#include "dll.h"
note bien que j'ai mis entre " et non entre <> (tu mets entre <> lorsque tu ajoutes le directory des includes dans la config de visual)
Tu as essay� la m�thode #import "madll.dll" ?
oui jai mis #include avec les "", quand jai mis #import"Netica.dll", il ya le message d'erreur qui apparait:Citation:
Envoy� par hegros
fatal error C1083: Cannot open type library file: 'c:\documents and settings\abbd\mes documents\visual studio 2005\projects\dfdf\dfdf\netica.dll': Erreur lors du chargement de la biblioth�que/DLL du type.
jai ajouter #include
"Netica.h"
#import "Netica.dll"
Dans MONprojet.cpp tout en haut
merci
Rassure-moi o� se trouve la DLL,le .LIB et le .h
les 3 se trouve dans le repertoire de mon projet, exactement dans C:\Documents and Settings\abbd\Mes documents\Visual Studio 2005\Projects\dfdf\dfdf
apr�s le Netica.h je l� ajout� dans Header Files, puis jais ajout� le chemin du .lib dans linker>input, puis jais ajout� du code c-�-d l'include et l'import
merci d'avance
Fais l'une ou l'autre m�thode pas les 2 en m�me temps.
Le mieux est de refaire un projet vierge avec un minimum de code (le mieux que la fonction principale et l'include du header de la dll)
Ajouter le .h au projet (clic droit sur l'arborescence du projet/add et tu ajoutes ton .h)
Faire ton #include "dll.h" et c'est tout puis compil� tu auras pass� l'�tape 1
L'�tape 2 est ensuite d'ajouter au linker le .LIB compilez si ok �tape 3
L'�tape 3 est de faire appel � une fonction de la dll dans ton source.
pour la 1er �tape quand je fait le #include ,bien sur en ajoutant dans le r�pertoire du projet, en compilant il me dit :
fatal error C1083: Cannot open type library file: 'Netica.dll': No such file or directory
Comment peut-il te dire cela si tu inclus Netica.h ?Citation:
Envoy� par abbd
Code:#include "Netica.h"
oui dsl, c'est moi qui a fait l'erreur jai ajout� #import "Netica.dll" sans faire expret,
pour la 2�me �tape il y'a erreur :
fatal error LNK1104: cannot open file 'C:\Documents.obj'
merci
Ok donc quand tu inclus "Netica.h" ca compile.
Il faut pas d�sactiver une option dans visual pour cette erreur ? Me souviens plus :oops:
C'est quoi la deuxi�me �tape que tu as fais ? :aie:
la 2�me etape c'est introduire le chemin Netica.lib dans Linker>Input
Ca doit pas �tre ici qu'il faut l'ajouter...Sinon je ne vois pas.Citation:
Envoy� par abbd
Essaie en mettant cette ligne au dessus de ton #include "Netica.h"
et vire ce que tu as fais dans l'�tape 2.Code:#pragma comment lib ("C:\...\MaDll.lib");
Lorsque je tape ce code #pragma comment lib ("C:\Documents and Settings\abbd\Mes documents\Visual Studio 2005\Projects\pro\pro\netica.lib"); il y'a pas erreur
Par contre il faut que tu doubles les \Citation:
Envoy� par abbd
En plus tu as des repertoires avec des espaces ce qui ne facilite pas la t�che :aie: Tu devrais normalement les mettre entre ""Code:#pragma comment lib ("C:\\Documents and Settings\\abbd\\Mes documents\\Visual Studio 2005\\Projects\\pro\\pro\\netica.lib");
Tu ne peux pas mettre ta lib dans un repertoire ou il n'y a pas d'espace :aie: Genre C:\LIB\NETICA
ok, quand je met Netica.lib dans C:\, puis je l'ajoute dans linker>input il y'a pas l'erreur de tout a l'heur je croix que c'est du au chemin qui est lon et les espaces, merci
Si tu as ajout� ton .h que tu as ajout� le #pragma pour le .lib et que tout cela compile sans erreur alors tu dois maintenant pouvoir utiliser les fonctions de ta dll dans le source genre : (je ne connais pas les fonctions de cette dll) :
Et ca devrait compiler et linker et s'executer.Code:fonc1_Netica();
N'oublies pas que ton .dll doit �tre dans le PATH (repertoire de l'exeuctable ou alors dans un des repertoire d�finis dans la variable d'environnement PATH)
il y'a la 3�me �tape qui fait erreur, quand j'ajoute #import "Netica.dll",
l'erreur est
fatal error C1083: Cannot open type library file: 'c:\documents and settings\abbd\mes documents\visual studio 2005\projects\dfdf\dfdf\netica.dll': Erreur lors du chargement de la biblioth�que/DLL du type.
est ce que cette ligne de code est necessaire?merci
Non ce n'est plus n�cessaire.Citation:
Envoy� par abbd
L'�tape 3 c'est d'appeler une fonction ;)
Code:func_Netica();
il y'a ce code qui utilise la dll, il est ecrit dans C, mais normalement sa doit march� dans C++ surtout qu'on a integr� la dll
mais dans MFC printf ne marche pas,jai essay� MessageBox("mon message");Citation:
int main (void){
net_bn *net;
node_bn *VisitAsia, *Tuberculosis, *Smoking, *Cancer, *TbOrCa, *XRay;
double belief;
char mesg[MESG_LEN_ns];
int res;
printf ("\nWelcome to Netica API!\n");
printf ("This demo project is from the first 2 examples of the Reference Manual.\n");
printf ("If it compiles, links and runs successfully (i.e. without generating\n");
printf ("errors), then your installation is probably good.\n");
printf ("Now you can replace the Demo.c file with your own code.\n");
printf ("--------------------------------------------------------------------\n\n");
env = NewNeticaEnviron_ns (NULL, NULL, NULL);
res = InitNetica_bn (&env, mesg);
printf ("%s\n", mesg);
if (res < 0) return -1;
net = NewNet_bn ("AsiaEx", env);
CHKERR
VisitAsia = NewNode_bn ("VisitAsia", 2, net);
Tuberculosis = NewNode_bn ("Tuberculosis", 2, net);
Smoking = NewNode_bn ("Smoking", 2, net);
Cancer = NewNode_bn ("Cancer", 2, net);
TbOrCa = NewNode_bn ("TbOrCa", 2, net);
XRay = NewNode_bn ("XRay", 2, net);
CHKERR
SetNodeStateNames_bn (VisitAsia, "visit, no_visit");
SetNodeStateNames_bn (Tuberculosis,"present, absent");
SetNodeStateNames_bn (Smoking, "smoker, nonsmoker");
SetNodeStateNames_bn (Cancer, "present, absent");
SetNodeStateNames_bn (TbOrCa, "true, false");
SetNodeStateNames_bn (XRay, "abnormal,normal");
SetNodeTitle_bn (TbOrCa, "Tuberculosis or Cancer");
SetNodeTitle_bn (Cancer, "Lung Cancer");
CHKERR
AddLink_bn (VisitAsia, Tuberculosis);
AddLink_bn (Smoking, Cancer);
AddLink_bn (Tuberculosis, TbOrCa);
AddLink_bn (Cancer, TbOrCa);
AddLink_bn (TbOrCa, XRay);
CHKERR
SetNodeProbs (VisitAsia, 0.01, 0.99);
SetNodeProbs (Tuberculosis, "visit", 0.05, 0.95);
SetNodeProbs (Tuberculosis, "no_visit", 0.01, 0.99);
SetNodeProbs (Smoking, 0.5, 0.5);
SetNodeProbs (Cancer, "smoker", 0.1, 0.9);
SetNodeProbs (Cancer, "nonsmoker", 0.01, 0.99);
// Tuberculosis Cancer
SetNodeProbs (TbOrCa, "present", "present", 1.0, 0.0);
SetNodeProbs (TbOrCa, "present", "absent", 1.0, 0.0);
SetNodeProbs (TbOrCa, "absent", "present", 1.0, 0.0);
SetNodeProbs (TbOrCa, "absent", "absent", 0.0, 1.0);
// TbOrCa Abnormal Normal
SetNodeProbs (XRay, "true", 0.98, 0.02);
SetNodeProbs (XRay, "false", 0.05, 0.95);
CHKERR
CompileNet_bn (net);
CHKERR
belief = GetNodeBelief ("Tuberculosis", "present", net);
CHKERR
printf ("The probability of tuberculosis is %g\n\n", belief);
EnterFinding ("XRay", "abnormal", net);
belief = GetNodeBelief ("Tuberculosis", "present", net);
CHKERR
printf ("Given an abnormal X-ray, \n\
the probability of tuberculosis is %g\n\n", belief);
EnterFinding ("VisitAsia", "visit", net);
belief = GetNodeBelief ("Tuberculosis", "present", net);
CHKERR
printf ("Given an abnormal X-ray and a visit to Asia, \n\
the probability of tuberculosis is %g\n\n", belief);
EnterFinding ("Cancer", "present", net);
belief = GetNodeBelief ("Tuberculosis", "present", net);
CHKERR
printf ("Given abnormal X-ray, Asia visit, and lung cancer, \n\
the probability of tuberculosis is %g\n\n", belief);
end:
DeleteNet_bn (net);
res = CloseNetica_bn (env, mesg);
printf ("%s\n", mesg);
printf ("Press <enter> key to quit ", mesg);
getchar();
return (res < 0) ? -1 : 0;
error:
fprintf (stderr, "NeticaDemo: Error in %s\n",
ErrorMessage_ns (GetError_ns (env, ERROR_ERR, NULL)));
goto end;
}
il fait erreur; mais normalement MessageBox affiche normalement un messsage box dans les MFC, parceque jai travailler avec les MFC dans visual C++ 6 sans problem,merci
Si ca compile et s'execute tu as alors un autre probl�me.
Pour afficher des messages dans la console avec les MFC il me semble qu'il existe une fonction PTRACE je crois ?
le code qui est ecrit au dessus la fonction main retourne un entier, pour l'essayer en C++ jai copier le code du mai et je l� copier dans un boutton mais la fonction mais retourne un entier il ya des erreur du genre
error LNK2019: unresolved external symbol _GetNodeBelief referenced in function "public: void __thiscall CrrrrDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CrrrrDlg@@QAEXXZ)
merci
Je ne vois pas le code d'ou vient l'erreur...
Tu as bien fais un projet MFC ? Toujours dans la configuration : use MFC library.
Mais sur ce coup l� je ne pourrais t'�tre d'une grande aide, j'ai renonc� aux MFC depuis longtemps :twisted:
OuiCitation:
Envoy� par hegros
j'utilise les MFC Application quand je compile il me fait 3erreur:
1>rrrrDlg.obj : error LNK2019: unresolved external symbol _GetNodeBelief referenced in function "public: void __thiscall CrrrrDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CrrrrDlg@@QAEXXZ)
1>rrrrDlg.obj : error LNK2019: unresolved external symbol _SetNodeProbs referenced in function "public: void __thiscall CrrrrDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CrrrrDlg@@QAEXXZ)
1>rrrrDlg.obj : error LNK2001: unresolved external symbol _env
sachant que jai r�duit du code, jai ecris le code suivant dans ub bouton
merciCitation:
net_bn *net;
node_bn *VisitAsia, *Tuberculosis, *Smoking, *Cancer, *TbOrCa, *XRay;
double belief;
char mesg[MESG_LEN_ns];
int res;
env = NewNeticaEnviron_ns (NULL, NULL, NULL);
res = InitNetica_bn (&env, mesg);
net = NewNet_bn ("AsiaEx", env);
VisitAsia = NewNode_bn ("VisitAsia", 2, net);
Tuberculosis = NewNode_bn ("Tuberculosis", 2, net);
Smoking = NewNode_bn ("Smoking", 2, net);
Cancer = NewNode_bn ("Cancer", 2, net);
TbOrCa = NewNode_bn ("TbOrCa", 2, net);
XRay = NewNode_bn ("XRay", 2, net);
SetNodeStateNames_bn (VisitAsia, "visit, no_visit");
SetNodeStateNames_bn (Tuberculosis,"present, absent");
SetNodeStateNames_bn (Smoking, "smoker, nonsmoker");
SetNodeStateNames_bn (Cancer, "present, absent");
SetNodeStateNames_bn (TbOrCa, "true, false");
SetNodeStateNames_bn (XRay, "abnormal,normal");
SetNodeTitle_bn (TbOrCa, "Tuberculosis or Cancer");
SetNodeTitle_bn (Cancer, "Lung Cancer");
AddLink_bn (VisitAsia, Tuberculosis);
AddLink_bn (Smoking, Cancer);
AddLink_bn (Tuberculosis, TbOrCa);
AddLink_bn (Cancer, TbOrCa);
AddLink_bn (TbOrCa, XRay);
SetNodeProbs (VisitAsia, 0.01, 0.99);
SetNodeProbs (Tuberculosis, "visit", 0.05, 0.95);
SetNodeProbs (Tuberculosis, "no_visit", 0.01, 0.99);
SetNodeProbs (Smoking, 0.5, 0.5);
SetNodeProbs (Cancer, "smoker", 0.1, 0.9);
SetNodeProbs (Cancer, "nonsmoker", 0.01, 0.99);
SetNodeProbs (TbOrCa, "present", "present", 1.0, 0.0);
SetNodeProbs (TbOrCa, "present", "absent", 1.0, 0.0);
SetNodeProbs (TbOrCa, "absent", "present", 1.0, 0.0);
SetNodeProbs (TbOrCa, "absent", "absent", 0.0, 1.0);
SetNodeProbs (XRay, "true", 0.98, 0.02);
SetNodeProbs (XRay, "false", 0.05, 0.95);
CompileNet_bn (net);
belief = GetNodeBelief ("Tuberculosis", "present", net);
printf ("The probability of tuberculosis is %g\n\n", belief);
Est ce que #include"Netica.h" je doit le mettre que dans MonprojetDlg.cpp?
il y'a toujours des erreur du type :
error LNK2019: unresolved external symbol _EnterFinding referenced in function "public: void __thiscall CrrrrDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CrrrrDlg@@QAEXXZ)
error LNK2019: unresolved external symbol _GetNodeBelief referenced in function "public: void __thiscall CrrrrDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CrrrrDlg@@QAEXXZ)
error LNK2019: unresolved external symbol _SetNodeProbs referenced in function "public: void __thiscall CrrrrDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CrrrrDlg@@QAEXXZ)
error LNK2001: unresolved external symbol _env
merci d'avance