IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Link avec lib winCe


Sujet :

C++/CLI

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 59
    Points : 27
    Points
    27
    Par défaut Link avec lib winCe
    Bonjour,

    Je cherche a ajouter une gestion simplifié du wifi sur un appareil WinCe6 a partir d'un programme en c#.
    Le fabricant du lecteur m'a fourni le sdk pour l'accés a la partie wifi (http://www.lairdtech.com/brandworld/...pers%20Kit.pdf)

    La doc est clair, pour du .net il faut un wrapper. Clairement c'est nouveau pour moi.
    J'ai suivi les tutos que j'ai pu trouver et j'en suis la :
    J'ai un projet CLI sur VS2008, j'ai ajouter le .h et le .lib founit et j'ai fait un bout de code basique pour tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #pragma once
    #include "sdc_sdk.h"
    using namespace System;
    namespace WrapperSCU {
    	public ref class WrapperSCUClass
    	{
    		public: 			
    			int WRadioDisable()
    			{
    				SDCERR	ret=RadioDisable();
    				if(ret==SDCERR_SUCCESS)
    					return 0;
    				else
    					return -1;
    			}
    	};
    J'obtiens le duo d'erreur : LNK2028 LNK2019 qui me dit que la fonction RadioDisable n'a pu etre linké.

    Aprés recherche il semblerait que ca peut venir de la difference de compilateur C++ entre la lib et mon projet. Dans la doc il parle de Embedded VC++, pas vraiment la techno la plus moderne...
    Je l'ai installé sur un VM ( ca ne s'installe plus sur W8.1) mais eVC ne propose pas de créer de wrapper...

    Je suis a court d'idée, si jamais vous avez une piste je suis preneur.

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    LNK2028 LNK2019 qui me dit que la fonction RadioDisable n'a pu etre linké.
    Vous avez oubliez d'entourer l'include du SDK par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern "C" {#include "sdc_sdk.h"}
    C'est une lib en C et pas en C++, avec cette astuce, le linker peut utiliser cette librairie sdk.lib, qui a des noms de symbole au format C et non C++.

    Embedded VC++
    Ça sent le sapin !!!
    Vérifiez la plateforme cible de votre Dll, elle doit être compatible avec l'OS de l'appareil cible.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    Je ne l'ai pas précisé mais le .h contient le extern_c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifdef __cplusplus
     extern "C" {
    #endif
    Je pense que ça doit faire pareil.

    La plateforme cible est compatible, c'est la même que pour mon projet c# qui fonctionne sans soucis sur l'appareil (NetCompact 3.5) la cible peut avoir un impact sur le link ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Je pense que ça doit faire pareil.
    Oui, mais comme je l'avais vu dans la documentation et pas dans votre code, cela m'avait fait tiquer.
    LNK2028
    https://msdn.microsoft.com/en-us/lib...or=-2147217396
    Il faut donc changer les options de compilation, car votre assembly C++/CLI d’interconnexion avec ce SDK ne peut être "/clr:pure".
    https://msdn.microsoft.com/en-us/library/k8d11d4s.aspx

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    J'ai vérifié je ne suis pas en /clr:pure mais bien en /clr.

    Je ne comprends pas bien l'usage de __declspec(dllexport) j'ai mis __declspec(dllimport) devant ma déclaration sdc_sdk.h mais pas de changement.

    c'est noté de compiler en /LD mais je ne trouve pas cette option, je n'ai que /MT /MTd /MD /MDd. Selon la doc du deuxième lien /MT semblait le plus approprié.

    Si je ne peux pas m'en sortir avec un wrapper, est-ce que faire une dll c++ classique a partir de la lib et l’utiliser avec des import en c# serait une option viable ?

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Euh, il me semblait que seuls /MD et /MDd étaient compatibles avec /clr...

    Personnellement, je conseillerais de commencer par tester si tu arrives à utiliser la lib dans un programme natif, avant d'ajouter les autres facteurs comme le /clr.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    J'arrive a faire fonctionner la lib avec un projet console natif.

    Le problème, je pense, vient de la définition du "type d'ordinateur module" (la traduction me parait moisie...) qui est fort logiquement X86 pour mon projet CLR et THUMB pour pour mon projet natif.
    Sauf que je ne vois pas ou je peux changer ce paramètre ni même si c'est possible en fait. la partie clr/cli est peut être faite uniquement pour la plateforme X86. je ne trouve pas d'infos sur le sujet.

    Edit :
    En changeant la plateforme cible avec le gestionnaire de configuration je peux passer sous Armv4 mais j'ai tout un tas d'erreur de compile dans AssemblyInfo.cpp

    Je vais partir sur une DLL native avec des import dans mon appli c#.

    Merci en tout cas pour le coup de main !

Discussions similaires

  1. Link libpq.lib avec Visual studio 2008 64bit
    Par nice.girl1983 dans le forum Visual C++
    Réponses: 6
    Dernier message: 23/09/2010, 15h34
  2. erreur link avec Builder C++
    Par axxel dans le forum DirectX
    Réponses: 8
    Dernier message: 20/07/2004, 02h58
  3. Problème avec lib SDL
    Par Info-Rital dans le forum Linux
    Réponses: 8
    Dernier message: 02/07/2004, 20h59
  4. Problème de link avec Borland C++ 5.5
    Par gelam dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 24/11/2003, 16h45
  5. pb de link avec direct X 8.1
    Par amaury pouly dans le forum DirectX
    Réponses: 2
    Dernier message: 01/04/2003, 08h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo