begin process at 2012 05 30 05:13:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

VC8 et Stingray: DLL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

VC8 et Stingray: DLL

vendredi 5 octobre 2007 à 16:18:10 | VC8 et Stingray: DLL

OmniXXX

Desole de l'anglais mais je ne veux pas reecrire toute ma question ------------------- Alright, this is not code oriented and so I'll make it brieft: Sorry don't know how to add code in this forum yet (rather new) A class like this: #ifndef VXT_SIMPLE_BUTTON_SPEC #ifdef VXT_UIUTILS_DLL #define VXT_SIMPLE_BUTTON_SPEC __declspec(dllexport) #else #define VXT_SIMPLE_BUTTON_SPEC __declspec(dllimport) #endif #endif class VXT_SIMPLE_BUTTON_SPEC vxtUISimpleButton: public CGXStatic the inherited class is FROM stingray and is now using dll interface compared to previous release like so: #ifdef _GXDLL #ifdef _GXDLL_IMPL #define GRID_API __declspec( dllexport ) // #pragma message("GRID_API: dllexport") #else #define GRID_API __declspec( dllimport ) // #pragma message("GRID_API: dllimport") #endif #else // !_GXDLL #define GRID_API #endif class CGXStatic : public CGXControl { DECLARE_CONTROL(CGXStatic) // Construction public: // Constructor & Destructor GRID_API CGXStatic(CGXGridCore* pGrid); GRID_API virtual CRect GetCellRect(ROWCOL nRow, ROWCOL nCol, LPRECT rectItem = NULL, const CGXStyle* pStyle = NULL); // compute the interior rectangle for the text // without buttons and borders GRID_API virtual CSize AddBorders(CSize size, const CGXStyle& style); // counterpart to GetCellRect GRID_API virtual CSize CalcSize(CDC* pDC, ROWCOL nRow, ROWCOL nCol, const CGXStyle& style, const CGXStyle* pStandardStyle, BOOL bVert); GRID_API virtual BOOL CanFloatCell(ROWCOL nRow, ROWCOL nCol, const CGXStyle& style, BOOL bFloatOrFlood); GRID_API virtual void Draw(CDC* pDC, CRect rect, ROWCOL nRow, ROWCOL nCol, const CGXStyle& style, const CGXStyle* pStandardStyle); // cells tips enable GRID_API void ImplementCellTips(); }; Now this returns: error C2487: member of dll interface class may not be declared with dll interface When using the macro: #define DECLARE_CONTROL(class_name) \ protected: \ GRID_API static CGXControlClass* PASCAL _GetControlBaseClass(); \ public: \ static GX_DATA CGXControlClass ctrl##class_name; \ GRID_API virtual CGXControlClass* GetControlClass() const; \ #define IMPLEMENT_CONTROL(class_name, base_class_name) \ CGXControlClass* PASCAL class_name::_GetControlBaseClass() \ { return CONTROL_CLASS(base_class_name); } \ GX_DATADEF CGXControlClass class_name::ctrl##class_name = { \ #class_name, &class_name::_GetControlBaseClass }; \ CGXControlClass* class_name::GetControlClass() const \ { return &class_name::ctrl##class_name; } \ DECLARE_CONTROL(vxtUISimpleButton) So I tried not using dllimport ON the class but instead on every functions Which returned this: warning C4273 : inconsistent dll linkage on the macro: #define IMPLEMENT_CONTROL(class_name, base_class_name) \ CGXControlClass* PASCAL class_name::_GetControlBaseClass() \ { return CONTROL_CLASS(base_class_name); } \ GX_DATADEF CGXControlClass class_name::ctrl##class_name = { \ #class_name, &class_name::_GetControlBaseClass }; \ CGXControlClass* class_name::GetControlClass() const \ { return &class_name::ctrl##class_name; } \ IMPLEMENT_CONTROL(vxtUISimpleButton, CGXStatic) Which is present because (I think) that we defined this function: virtual VXT_SIMPLE_BUTTON_SPEC vxtVoid Draw(CDC* pDC, CRect rect, ROWCOL nRow, ROWCOL nCol, const CGXStyle& style, const CGXStyle* pStandardStyle); and the stingray class defined it this way: GRID_API virtual void Draw(CDC* pDC, CRect rect, ROWCOL nRow, ROWCOL nCol, const CGXStyle& style, const CGXStyle* pStandardStyle); Both are on dllImport Any suggestion on how to "cleanly" remove the error and warning?
vendredi 5 octobre 2007 à 16:52:12 | Re : VC8 et Stingray: DLL

juju12

Je pense que c'est parce que ta classe (vxtUISimpleButton) est déclarée dllexport (ou import j'en sais rien) via VXT_SIMPLE_BUTTON_SPEC, le problème c'est qu'avec ta macro DECLARE_CONTROL tu déclares des fonctions membres de cette classe également dllexport(resp. import), ce qui est interdit. Solution : enlève tous les GRID_API dans l'implémentation de ta macro (je vois pas pourquoi ca y était en fait).
vendredi 5 octobre 2007 à 17:01:09 | Re : VC8 et Stingray: DLL

OmniXXX

Le probleme est que la partie GRID_API viens du programme Stingray et changer cela pourrait degringolet ailleur car ce programme est assez volumineux... Tout ce que je peux changer est ma classe vxt...le reste je ne peux y toucher sans causer des bugs externes


Cette discussion est classée dans : class, const, api, name, grid


Répondre à ce message

Sujets en rapport avec ce message

heritage et dll dynamique [ par dune ] Bonjour,je programme un gestionnaire de plugins et certaines fonctions et class doivent etre utilisees dans chaque plugin. Je mets donc mes fonctions wxXmlResource -- > récupérer un wxString = galère ? [ par satellite34 ] bonsoir,J'utilise la class wxXmlResource pour creer un menu dynamique de signets ftp ( pour un client );Jusque la tout va bien;Mon problem se situe qu erreur de lien [ par samatarahmed ] bonjour je suis debutant en c++ et ça fait deux semaine que je suis un projet.j'ai créé ma classe client et j'ai ajouté dans la librairie , la librair l'api CLSID const& GetClsid() [ par mniajnaa ] bonjour je voudrais se documenter sur la fonction " CLSID const& GetClsid()" de la classe wrapper "generé au moment de l'ajout d'une variable à l C++ les class ? question de déutant ? [ par panthere007 ] helloj'ai un peux de peine a comprendre les class,:? je ne comprend pas comment récupérer un contenu d'une variable après l'execution d'une fonction d Libelle Clair d'un OID en SNMP avec API SDK de Windows XP [ par jiceD ] Bonjour à tous, Petite question sur le protocole SNMP avec l'API SDK de Windows XP: ================================================================= Problème au linkage [ par TorTukiTu ] Bonjour, je poste aujourd'hui car j'ai passé la nuit sur le problème qui suit: (Je tourne sous ubuntu linux, la compilation a lieu avec g++)J'ai un co Exporter une class depuis une DLL et l'utiliser dans un programme quelconque [ par Havy ] DLL contenant la classe (Maths.dll) #define DllExport __declspec (dllexport)class DllExport Test{    private: int nombre;    public: int Carre(in API Detecter double clic sur une child windows [ par Silince ] Bonjour, J'arrive pas a partir d'une fenetre parent de detecter un double clic sur sa fenetre fille. J ai essaye avec WM_PARENTNOTIFY, il detecte bi Comment ajouter du texte par surcharge d'opérateur langage C [ par laurentdav ] Bonjour, Je n'arrive pas à programmer mon opérateur + pour pouvoir ajouter du texte. Je vous remercie par avance. Le code est le suivant #include


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,203 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales