Visual Studio 2008 IDE - Estática La vinculación de una biblioteca DLL de C
-
19-09-2019 - |
Pregunta
Estoy experimentando frustración ^ Frustraion con este% & $ ^ & VS IDE. Estoy utilizando Visual C ++ 2008 SP1 3.5 (pero también tengo la edición Pro si lo que se necesita y no quiero utilizar LoadLibrary ())
Tengo una DLL de prueba creada en otro idioma (C básica no de hecho) que contiene una función CDECL que añade un 'int' a un 'doble'. Realmente me gustaría añadir un int a un flotador usando STDCALL, pero si puede llegar el primero para trabajar en primer lugar que sería un acheivement importante.
He leído extensamente y tratado: http://support.microsoft.com/kb/313981 http://www.codeproject.com/KB/DLL/loadingdll.aspx enlazar a un lib estática que une a una estructura estática lib estática y dinámicamente DLL enlazan generan con diferentes versiones de visual Studio
Me escribió un archivo de cabecera agradable para el AddShow.dll llama AddShow.h
DLLAPI int __cdecl AddTwoNum(int n, double f);
Luego utiliza esta ingeniosa herramienta para crear el archivo .lib: http://www.binary-soft.com/dll2lib/dll2lib.htm
Ahora qué?
He intentado Haga clic derecho y 'Añadir' y luego 'Clase" y luego 'componant Clase' a continuación, especificar la ruta y el nombre del archivo DLL, pero me da 8 millas de la hinchazón y de toda la caja de herramientas de las ventanas y un nuevo archivo AddShow.cpp.
Mi código C ++ es muy 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;
}
¿Cómo se acaba de obtener el IDE para vincular el archivo .lib?
AÑADIDO:
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 ==========
Solución
Puede ir a:
Propiedades del proyecto -> Enlazador -> entrada
Publique sus .lib a las "Dependencias adicionales".
Además, puede poner
#pragma comment(lib, "<your .lib>")
en su archivo .cpp.