Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1019 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4
Auteur Sujet :

classe non reconnue

n°1168470
morgan541
Posté le 03-08-2005 à 09:06:55  profilanswer
 

Reprise du message précédent :
Ok!
 
sinon juste pour souffler un peu sur le sujet
 
Peut-on ajouter autant de projets que l'on veut à un workspace?et les faire dépendre les uns des autres...certainbs d'entre eux générant des .lib...

mood
Publicité
Posté le 03-08-2005 à 09:06:55  profilanswer
 

n°1168491
theshockwa​ve
I work at a firm named Koslow
Posté le 03-08-2005 à 09:35:58  profilanswer
 

ben, si les conventions d'appel sont les mêmes dans la DLL et dans le projet qui l'utilise, il n'y a pas de problème à ce niveau là. Et je doute qu'un problème de mangling se pose juste sur le constructeur ... Enfin bref ...

Citation :

Dans ce cas, il faut que tu donnes plus de code, j'imagine


tant qu'on n'en aura pas plus, on ne pourra pas vraiment t'aider davantage

n°1168500
morgan541
Posté le 03-08-2005 à 09:44:41  profilanswer
 

tu veux quoi  
il me semble que j'ai donné constructeur, instanciation.
Que veux tu d'autres?

n°1168513
morgan541
Posté le 03-08-2005 à 09:56:27  profilanswer
 

Ok pour l'ajout d'autres projets!
 
sinon concernant les external errors, j'ai tjs la même
 
unresolved external symbol "public: __thiscall QuantLib::Pricers::EuropeanOption::EuropeanOption(enum QuantLib::Option::Type,double,double,double,double,double,double)

n°1168517
slash33
Posté le 03-08-2005 à 09:58:43  profilanswer
 

Tu peux manipuler autant de projets que tu veux et faire autant de dépendances que tu veux (évite les bouclages, jamais essayé mais le résultat ne doit pas être top)

n°1168534
theshockwa​ve
I work at a firm named Koslow
Posté le 03-08-2005 à 10:10:28  profilanswer
 

je voudrais bien voir l'intégralité des fichiers concernés par les problèmes (on ne va pas toujours deviner les problèmes de namespace, par exemple, si tu ne nous donnes jamais tout ...)

n°1168536
slash33
Posté le 03-08-2005 à 10:11:18  profilanswer
 

Tu veux pas qu'il te file tout le projet tant qu'on y est?

n°1168537
theshockwa​ve
I work at a firm named Koslow
Posté le 03-08-2005 à 10:13:11  profilanswer
 

ben si tu veux qu'il continue à nous filer une ligne par-ci par là, complètement sortie de son contexte avec obfuscation du code et des messages d'erreurs, dis-le clairement :o
 
Sérieusement, j'ai l'impression de devoir me battre pour pouvoir l'aider à comprendre son problème, s'il ne veut pas montrer son code, c'est même pas la peine de venir chercher de l'aide ici :o

n°1168542
morgan541
Posté le 03-08-2005 à 10:17:42  profilanswer
 

Code :
  1. #include <ql/Pricers/singleassetoption.hpp>
  2. #include <ql/Math/normaldistribution.hpp>
  3. namespace QuantLib {
  4.     namespace Pricers {
  5.         //! Black-Scholes-Merton European option
  6.         class EuropeanOption : public SingleAssetOption {
  7.           public:
  8.             // constructor
  9.     EuropeanOption(Option::Type type, double underlying,
  10.                 double strike, Spread dividendYield, Rate riskFreeRate,
  11.                 Time residualTime, double volatility);
  12.             // accessors
  13.             double value() const;
  14.             double delta() const;
  15.             double gamma() const;
  16.             double theta() const;
  17.             double vega() const;
  18.             double rho() const;
  19.             double dividendRho() const;
  20.             Handle<SingleAssetOption> clone() const {
  21.                 return Handle<SingleAssetOption>(new EuropeanOption(*this)); }
  22.             // modifiers
  23.             void setVolatility(double newVolatility);
  24.             void setRiskFreeRate(Rate newRate);
  25.             void setDividendYield(Rate newDividendYield);
  26.             double beta() const;
  27.           private:
  28.             static const Math::CumulativeNormalDistribution f_;
  29.             double alpha() const;
  30.             double standardDeviation() const;
  31.             double D1() const;
  32.             double D2() const;
  33.             double NID1() const;
  34.             DiscountFactor dividendDiscount() const;
  35.             DiscountFactor riskFreeDiscount() const;
  36.             // declared as mutable to preserve
  37.             // the logical constness (does this word exist?) of value()
  38.             mutable double alpha_, beta_, standardDeviation_,
  39.                 D1_, D2_, NID1_;
  40.             mutable DiscountFactor dividendDiscount_, riskFreeDiscount_;


 

n°1168543
slash33
Posté le 03-08-2005 à 10:17:48  profilanswer
 

Non mais d'après ce que j'en ai vu, le projet à plein de dépendances et utilisent des bibliothèques du taf (ou est-ce sur un autre thread).
 
theshockwave a raison: donne le code complet des fichiers concernés.

mood
Publicité
Posté le 03-08-2005 à 10:17:48  profilanswer
 

n°1168545
morgan541
Posté le 03-08-2005 à 10:21:37  profilanswer
 

pas mal de dépendances en effet
 
ca parait dur d'être exhaustif!

n°1168547
morgan541
Posté le 03-08-2005 à 10:22:44  profilanswer
 

Code :
  1. #include <ql/Pricers/europeanoption.hpp>
  2. namespace QuantLib {
  3.     namespace Pricers {
  4.         const Math::CumulativeNormalDistribution EuropeanOption::f_;
  5.         EuropeanOption::EuropeanOption(Option::Type type, double underlying,
  6.             double strike, Spread dividendYield, Rate riskFreeRate,
  7.             Time residualTime, double volatility)
  8.   : SingleAssetOption(type, underlying, strike, dividendYield,
  9.                             riskFreeRate, residualTime, volatility),
  10.           alpha_(Null<double>()), beta_(Null<double>()),
  11.           standardDeviation_(Null<double>()), D1_(Null<double>()),
  12.           D2_(Null<double>()), NID1_(Null<double>()),
  13.           dividendDiscount_(Null<DiscountFactor>()),
  14.           riskFreeDiscount_(Null<DiscountFactor>()) {}

n°1168554
slash33
Posté le 03-08-2005 à 10:27:42  profilanswer
 

Les codes que tu donnes ne sont pas complets.

n°1168555
theshockwa​ve
I work at a firm named Koslow
Posté le 03-08-2005 à 10:28:17  profilanswer
 

merci, c'est plus plaisant d'avoir un peu de visibilité autour :D
 
Par contre, j'ai encore un peu de mal à voir le problème malgré tout :/
 
Ce qui est surprenant, c'est que les autres définitions de fonctions ne te posent pas le même genre de soucis.
 
(Edit : Pas de rapport, mais ... il n'y a pas de protection contre l'inclusion multiple de tes fichiers d'entête ?)


Message édité par theshockwave le 03-08-2005 à 10:29:13
n°1168561
morgan541
Posté le 03-08-2005 à 10:32:00  profilanswer
 

Je ne comprends pas ta dernière remarque
protection...???

n°1168562
slash33
Posté le 03-08-2005 à 10:33:42  profilanswer
 

Code :
  1. #ifndef _MON_FICHIER_H
  2. #define _MON_FICHIER_H
  3. // ce code est protégé contre l'inclusion multiple
  4. #endif //_MON_FICHIER_H

n°1168565
theshockwa​ve
I work at a firm named Koslow
Posté le 03-08-2005 à 10:35:40  profilanswer
 


sauf qu'en général, on choisit quelque chose de plus "unique" que le nom du fichier ;)

n°1168566
morgan541
Posté le 03-08-2005 à 10:36:05  profilanswer
 

Si

n°1168569
slash33
Posté le 03-08-2005 à 10:38:26  profilanswer
 

theshockwave a écrit :

sauf qu'en général, on choisit quelque chose de plus "unique" que le nom du fichier ;)


Oui bon... heu tu prend quoi toi habituellement? Comme j'utilise le Class Wizard de Visual je ne me prend pas la tête pour les noms.

n°1168575
theshockwa​ve
I work at a firm named Koslow
Posté le 03-08-2005 à 10:45:25  profilanswer
 

slash33 a écrit :

Oui bon... heu tu prend quoi toi habituellement? Comme j'utilise le Class Wizard de Visual je ne me prend pas la tête pour les noms.


 
Bah, en général, quelque chose comme _SOCIETE_PROJET_FICHIER_DATE_
 
à la limite, j'ajoute l'auteur si c'est une habitude des autres programmeurs que de le préciser :D
 
Edit : Le mauvais exemple, évidemment, c'est le cas de l'étudiant qui fait sa classe Stack avec le #ifndef STACK_H qu'on a énormément de chances de retrouver dans un autre projet :/
sinon, les décorations de nom générées par Visual Studio ne sont pas si mal.
 
Edit 2 : typo ...


Message édité par theshockwave le 03-08-2005 à 10:47:39
n°1168604
theshockwa​ve
I work at a firm named Koslow
Posté le 03-08-2005 à 11:10:21  profilanswer
 

Ton fichier .cpp qui contient la définition de ton constructeur contient bien la définition d'autres fonctions, n'est-ce pas ?
 
C'est tout de même étrange qu'il pose un problème juste pour la définition du constructeur :/

n°1168607
slash33
Posté le 03-08-2005 à 11:11:44  profilanswer
 

Oups j'ai plein de codes comme ça...
Mais très peu de réutilisation en interne (c'est un mal mais personne ne veut m'écouter) donc pas grave non?
Sinon un truc à base de l'URL + non fichier + date(je vois pas trop l'intéret si tu utilises la gestion de conf et si tu enseignes les versions mais bon) c'est pas bien?
 
Dans le même genre, tu mets ton code C++ dans un namespace basé sur l'URL (Java like quoi)?


Message édité par slash33 le 03-08-2005 à 11:13:44
n°1168610
HelloWorld
Salut tout le monde!
Posté le 03-08-2005 à 11:12:04  profilanswer
 

Si EuropeanOption est implémentée dans une dll, et utilisé ailleurs que dans cette dll, il faut l'exporter. Tu dois avoir une macro définie quelque part, qui se place de cette façon (par exemple):

Code :
  1. class QUANTLIB_EXPORT EuropeanOption : public SingleAssetOption {


Faut que tu précises dans quel projet est compilé EuropeanOption, sous quelle forme (lib/dll), et depuis où il est utilisé (sur qui est l'erreur de link).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1168616
slash33
Posté le 03-08-2005 à 11:14:28  profilanswer
 

Ah voilà HelloWord a compris ma remarque.


Message édité par slash33 le 03-08-2005 à 11:35:30
n°1168620
theshockwa​ve
I work at a firm named Koslow
Posté le 03-08-2005 à 11:16:19  profilanswer
 

(J'avoue, je ne suis pas habitué à lier avec des DLL dans un projet directement :/ Je fais le chargement des fonctions à la main)

n°1168621
morgan541
Posté le 03-08-2005 à 11:16:24  profilanswer
 

EuropeanOption est compilée à travers un projet QuantLib qui crée QuantLib.lib
et dans l'active project je fais appel à cette libraire en déclarant justement un objet europeanooption

n°1168630
HelloWorld
Salut tout le monde!
Posté le 03-08-2005 à 11:19:37  profilanswer
 

Lie ton projet à QuantLib.lib, ou plus simple, clic droit sur ton projet -> dépendances du projet, et coche QuantLib.lib.
QuantLib est bien une lib statique, pas une dll ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1168652
morgan541
Posté le 03-08-2005 à 11:27:57  profilanswer
 

oui librairie statique

n°1168661
slash33
Posté le 03-08-2005 à 11:30:52  profilanswer
 

Bon il me semble que tu dois faire ce que HelloWord t'as dis à savoir:
1) déclarer #define QUANTLIB_EXPORT __declspec (dllexport)
2) ajouter QUANTLIB_EXPORT devant la déclaration de EuropeanOption.


Message édité par slash33 le 03-08-2005 à 11:36:32
n°1168679
theshockwa​ve
I work at a firm named Koslow
Posté le 03-08-2005 à 11:36:02  profilanswer
 

(tu vas arrêter avec Harkonnen ? C'est HelloWorld qui vient répondre :p)
 
si c'est une lib, pas besoin de dllexport, justement

n°1168682
slash33
Posté le 03-08-2005 à 11:37:07  profilanswer
 

theshockwave a écrit :

(tu vas arrêter avec Harkonnen ? C'est HelloWorld qui vient répondre :p)
 
si c'est une lib, pas besoin de dllexport, justement


L'habitude... et je viens de corriger avant ta réponse LOL

n°1168688
slash33
Posté le 03-08-2005 à 11:39:47  profilanswer
 

Attend je vais essayer de faire un état des lieux des projets et dépendances:

1) Une DLL RisqueCom.dll et les erreurs de compil:

Code :
  1. error LNK2001: unresolved external symbol "public: virtual double __thiscall QuantLib::Pricers::SingleAssetOption::dividendRho(void)const " (?dividendRho@SingleAssetOption@Pricers@QuantLib@@UBENXZ)
  2. ExcelBlackScholes.obj : 
  3. error LNK2001: unresolved external symbol "public: virtual double __thiscall QuantLib::Pricers::SingleAssetOption::rho(void)const " (?rho@SingleAssetOption@Pricers@QuantLib@@UBENXZ)
  4. ExcelBlackScholes.obj :
  5. ../../../bin/RisqueCom.dll : fatal error LNK1120: 1 unresolved externals


-> Erreurs corrigées.
 

Code :
  1. unresolved external symbol "public: __thiscall QuantLib::Pricers::EuropeanOption::EuropeanOption(enum QuantLib::Option::Type,double,double,double,double,double,double)


-> Erreurs à corriger.
 
2) Une bibliothèque QuantLib.lib
Contient la classe EuropeanOption.
 
Dépendances:
 
=> RisqueCom.dll -> utilise -> QuantLib.lib


Message édité par slash33 le 03-08-2005 à 11:52:39
n°1168691
morgan541
Posté le 03-08-2005 à 11:42:17  profilanswer
 

ces 2 erreurs là c bon
corrigées
j'ai rajouté =0 dans la classe mère sianglassetoption
 
rest plus que le constructeur de europeanoption

n°1168703
morgan541
Posté le 03-08-2005 à 11:48:12  profilanswer
 

totu à fait

n°1168706
slash33
Posté le 03-08-2005 à 11:49:23  profilanswer
 

Au vu de ça je dirais inclure QuantLib.Lib dans le projet de RisqueCom.dll
 
Note: pourquoi ne pas mettre QuantLib sous forme de DLL??
 
Edit: typo


Message édité par slash33 le 03-08-2005 à 11:58:10
n°1168715
morgan541
Posté le 03-08-2005 à 11:55:02  profilanswer
 

ne marche pas!
 tjs l'erreur pour le constructeur
 
:-(

n°1168725
slash33
Posté le 03-08-2005 à 11:59:54  profilanswer
 

Heu je sais pas. Les namespaces sont bien fermés?
Au secours!

n°1168730
morgan541
Posté le 03-08-2005 à 12:02:06  profilanswer
 

oui je pense j'ai fait du copier/coller
mais allez je vous laisse tranquille  
je peux me passer de ce fichier
 
merci encore pour  votre acharnement!!
:-)

n°1168743
slash33
Posté le 03-08-2005 à 12:06:05  profilanswer
 

Ne jette pas l'éponge, il y a bien quelqu'un qui va trouver! :hello: (mais apparement ce ne sera pas moi  :sweat: )

n°1168863
HelloWorld
Salut tout le monde!
Posté le 03-08-2005 à 13:48:29  profilanswer
 

Si c'est une lib statique, que tu link bien avec (soit en ajoutant QuantLib.lib dans les options du linker, soit en cochant QuantLib comme dépendance de RisqueCom), alors si tu as implémenter le constructeur en question, ça devrait fonctionner. Vérifie bien tout...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1168870
slash33
Posté le 03-08-2005 à 13:55:30  profilanswer
 

Dis HelloWorld: ça ne fonctionnerait pas en incluant QuantLib.lib dans le projet de RisqueCom.DLL?


Message édité par slash33 le 03-08-2005 à 13:55:47
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4

Aller à :
Ajouter une réponse
 

Sujets relatifs
prob acces a une methode d'une classeChanger une classe d'un objet input [Résolu]
SWT/AWT et la classe ListComment utiliser cette classe PHP pour lire du Excel ?
classe et interfaceclasse CSS et id de balise
Probleme attacheMovie & Classe externeFaire des membres d'une classe en "lecture seule"
[C#] Classe de logClasse non reconnue
Plus de sujets relatifs à : classe non reconnue


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR