2011-09-06 3 views
2

De nos jours, j'essaie simplement d'utiliser des bibliothèques audio, et le LibXtract en fait partie. Avec l'aide de gcc, j'ai construit LibXtract en tant que bibliothèque statique et tout s'est bien passé :)Comment construire LibXtract en tant que DLL sous Windows

Mais quand j'ai essayé d'utiliser le lib dans MSVC, j'ai rencontré un problème: le format statique lib n'est pas compatible entre gcc et MSVC , J'ai juste essayé de compiler le LibXtract dans le format de DLL (partagé), mais même j'ai placé l'indicateur de configuration (- enable-shared), la bibliothèque était encore compilée en format statique ...

Est-ce que quelqu'un sait quelque chose au sujet de ce ? Ou vous pouvez me donner un meilleur moyen d'atteindre l'objectif (en utilisant LibXtract dans MSVC)? Merci beaucoup :)

+0

comment avez-vous le construisez, en MinGW, Cygwin ou autre chose? –

+0

Je viens d'utiliser mingw :) – Hugo

+0

il est possible de construire une bibliothèque statique dans mingw et de le lier avec du code construit en MSVC. par exemple. J'ai utilisé la bibliothèque FFMPEG de cette manière. Désolé, je ne sais pas si quelque chose de spécial a été fait pour y parvenir –

Répondre

1

J'ai recherché les codes LibXtract et trouvé qu'il n'y a pas de codes de sortie dll dedans, donc je pense que LibXtract peut être simplement compilé en format statique maintenant, sinon vous devez modifier les codes de la bibliothèque ... (pas si sûr)

Maintenant, je viens de copier les codes d'origine et config.h qui est généré par sh ./configure opération à un nouveau projet VC-Static-bibliothèque, j'ai également modifié de nombreux codes (la plupart sont des opérations de cast) pour s'adapter au compilateur VS, et enfin j'ai obtenu le LibXtract.lib, mais je ne suis pas si sûr de la correction ... Mais le programme de test simple semble être OK :)

Et sur le sujet qui a été mentionné par Andy T (Merci pour vos commentaires :)), il a dit que la bibliothèque statique qui est construit en MinGW peut être lié à MSVC, je l'ai essayé et trouvé au moins deux choses qui entraînera la conclusion Fail:

  1. si la bibliothèque statique est compilée en standard-C, il y aura presque OK dans la plupart du temps, puisque le format de .a et .lib semble le même, mais quand vous appelez certaines fonctions qui ne sont pas supportées dans MSVC, il y aura problème ... non référencé

  2. si la bibliothèque statique est compilé en standard C++, il y aura plus de problèmes, la plus évidente est le nom mutiler, puisque le nom des opérations mutiler sont très différentes entre gcc et MSVC, cela cause al ot problème déréférencer lors de la liaison ...

Questions connexes