2010-10-10 5 views
1

J'ai une bibliothèque de communication construite au-dessus de Qt et des tampons de protocole de Google. Il est actuellement construit avec MinGW/GCC sur Windows. Mon but est d'utiliser la même bibliothèque en C# sur .NET, à l'aide d'un wrapper fin en utilisant C++/CLI (pontage du code non managé avec du code managé). J'ai essayé d'utiliser la DLL produite par MinGW directement dans mon projet C++/CLI, mais je continue à recevoir des erreurs de liens (je ne me rappelle pas les codes d'erreur, mais quelque chose sur les jetons manquants et les fonctions/signatures).Utilisation de DLL construite par MinGW/GCC dans un projet Visual Studio 2010 C++/CLI

La première question est: Dois-je être capable d'utiliser la DLL produite par MinGW avec le compilateur/éditeur de liens Visual Studio? Ou ai-je besoin de recompiler la bibliothèque, en utilisant uniquement le compilateur VS pour tous les projets?

Si je devais pouvoir utiliser directement la DLL produite par MinGW, comment puis-je la référencer dans Visual Studio 2010? Dans les paramètres du projet, il semble chercher des fichiers * .lib, mais je ne trouve aucun fichier .lib dans la sortie de MinGW/GCC. Il produit des fichiers * .a, mais il semble que Visual Studio ne gère pas ce type de fichier.

Je devrais également mentionner que Qt et protobuf sont également compilés avec MinGW. Mais je peux bien sûr recompiler toutes les parties de VS 2010 si nécessaire. Cela aurait été bien d'enregistrer le temps de recompilation, puisque notre buildserver a déjà une configuration de travail utilisant MinGW.

+1

Je déteste commenter hors sujet, mais pourriez-vous décrire comment vous avez compilé les tampons de protocole de Google en utilisant MinGW sur Windows? –

Répondre

2

La façon la plus simple de l'utiliser serait de le recompiler avec Visual Studio. C'est à ce moment que je suppose les types et les classes C++ utilisés dans l'interface que vous avez l'intention d'utiliser.

Si vous avez une interface C vers cette bibliothèque, vous pouvez charger dynamiquement la bibliothèque via LoadLibrary et utiliser GetProcAddress pour accéder à ces fonctions.

Cependant, cela dépend entièrement de la façon dont vous envisagez d'utiliser la bibliothèque.

+1

Qt n'est pas une interface C ... Recompiler avec Visual Studio n'est pas seulement la manière la plus simple, c'est la seule façon. gcc n'utilise pas la même mise en page de mémoire pour les classes C++, donc même si vous avez créé une bibliothèque d'importation pour la DLL construite par mingw-gcc, cela ne fonctionnerait pas. –

+0

Ok, merci pour les réponses à vous deux .. Je vais aller de l'avant recompiler tout en VS alors .. – notbo

+0

@Ben Voigt: Je suis conscient de, que Qt n'a pas d'interface C par lui-même. Mais il aurait pu en créer un pour les choses dont il a besoin. Dans ce cas, il aurait pu l'utiliser. Même s'il a été créé par MinGW – Vinzenz

Questions connexes