2009-10-03 10 views
0

Je rencontre Frustration Frustration avec ce% & $^& VS IDE. J'utilise Visual C++ 2008 3.5 SP1 (mais j'ai aussi l'édition professionnelle si nécessaire et je ne veux pas utiliser loadlibrary())Visual Studio 2008 IDE - Liaison statique d'une bibliothèque Dll C

J'ai un test Dll créé dans une autre langue (basique pas C en fait) qui contient une fonction CDECL qui ajoute un 'int' à un 'double'. Je voudrais vraiment ajouter un int à un float en utilisant STDCALL, mais si le premier fonctionne, ce serait un grand succès.

J'ai beaucoup lu et essayé: http://support.microsoft.com/kb/313981 http://www.codeproject.com/KB/DLL/loadingdll.aspx Linking to a static lib that links to a static lib statically and dynamically linking DLLs generated with different versions of Visual Studio

j'ai écrit un fichier d'en-tête bien pour le AddShow.dll appelé AddShow.h

DLLAPI int __cdecl AddTwoNum(int n, double f); 

J'ai ensuite utilisé ce nifty outil pour créer le fichier .lib: http://www.binary-soft.com/dll2lib/dll2lib.htm

Et maintenant? J'ai essayé de faire un clic droit et 'Add' puis 'Class' puis 'Componant Class' en spécifiant le chemin et le nom de la DLL, mais j'obtiens 8 miles de bloat et toute la boîte à outils Windows et un nouveau fichier AddShow.cpp .

Mon code C++ est vraiment simple:

extern int __cdecl AddTwoNum(int n, double f); 

int main() 
{ 
    int n, RetVal; 
    double d; 

     n = 33; 
     d = 66.6; 

    RetVal = AddTwoNum(n, d); 

    cout << "RetVal=" << RetVal; 

    return 0; 
} 

Comment puis-je obtenir que l'IDE pour relier le fichier .lib

AJOUTÉE:

after linking (.lib file is in the debug file) I get the following error: 
Compiling... 
main.cpp 
Linking... 
main.obj : error LNK2019: unresolved external symbol "int __cdecl AddTwoNum(int,double)" ([email protected]@[email protected]) referenced in function _main 
C:\C++\FirstDll\Debug\FirstDll.exe : fatal error LNK1120: 1 unresolved externals 
Build log was saved at "file://c:\C++\FirstDll\FirstDll\Debug\BuildLog.htm" 
FirstDll - 2 error(s), 0 warning(s) 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 
+0

Vous pouvez commencer à utiliser CMake pour générer des fichiers de solution, au lieu de cliquer sur le gestionnaire de solutions. Je trouve CMake moins irritant. – liori

Répondre

2

Vous pouvez aller à:

Propriétés du projet -> Linker -> Entrée

Ensuite, ajoutez votre .lib aux "dépendances supplémentaires".

De plus, vous pouvez mettre

#pragma comment(lib, "<your .lib>") 

dans votre fichier .cpp.

+0

merci pour cela mais je reçois l'erreur de compilation ci-dessus. –

+1

Dans votre erreur, le nom de AddTwoNum est altéré (? AddTwoNum @@ YAHHN @ Z) Essayez de placer votre déclaration AddTwoNum entre parenthèses d'un "C" externe {} – Kevin