Visual Studio 2008 IDE - Statico Collegamento di una libreria DLL C
-
19-09-2019 - |
Domanda
sto vivendo frustrazione ^ Frustraion con questo% & $ ^ & VS IDE. Sto usando Visual C ++ 2008 SP1 3.5 (ma ho anche la Pro Edition se ciò che è necessario e non voglio usare LoadLibrary ())
Ho un Dll di test creato in un'altra lingua (di base non C in effetti) che contiene una funzione CDECL che aggiunge un 'int' a un 'doppio'. Vorrei davvero aggiungere un int in un float utilizzando STDCALL, ma se può ottenere il primo a lavorare prima che sarebbe un importante acheivement.
Ho letto molto e provato: http://support.microsoft.com/kb/313981 http://www.codeproject.com/KB/DLL/loadingdll.aspx Collegamento a un lib statica che si collega a una statica lib staticamente e dinamicamente le DLL che collegano generati con diverse versioni di visual Studio
ho scritto un bel file di intestazione per l'AddShow.dll chiamato AddShow.h
DLLAPI int __cdecl AddTwoNum(int n, double f);
Poi ho usato questo ingegnoso strumento per creare il file lib: http://www.binary-soft.com/dll2lib/dll2lib.htm
Ora che cosa?
Ho provato a fare clic destro e 'Add' poi 'Classe" poi 'componant Class' quindi specificare il percorso e il nome della DLL, ma ottengo 8 miglia di gonfiare e l'intera cassetta degli attrezzi finestre e un nuovo file AddShow.cpp.
Il mio codice C ++ è molto semplice:
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;
}
Come faccio ottengo solo l'IDE per collegare il file Lib?
AGGIUNTO:
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)" (?AddTwoNum@@YAHHN@Z) 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 ==========
Soluzione
Si può andare a:
Proprietà progetto -> Linker -> ingresso
Allora aggiungi la tua Lib alle "Dipendenze aggiuntive".
Inoltre, si può mettere
#pragma comment(lib, "<your .lib>")
nel file cpp.