Я испытываю разочарование ^ Разочарование в этой% & $ ^ & VS IDE.
Я использую Visual C ++ 2008 3.5 SP1 (но у меня также есть профессиональная версия, если это необходимо, и я не хочу использовать loadlibrary ())
У меня есть тестовый Dll, созданный на другом языке (на самом деле базовый, а не C), который содержит функцию CDECL, которая добавляет int к double. Я бы очень хотел добавить int в число с плавающей точкой, используя STDCALL, но если можно заставить первый работать первым, это было бы большим достижением.
Я много читал и попробовал:
http://support.microsoft.com/kb/313981
http://www.codeproject.com/KB/DLL/loadingdll.aspx
Ссылка на статическую библиотеку, которая ссылается на статическую библиотеку
статическое и динамическое связывание библиотек DLL, созданных в разных версиях Visual Studio
Я написал хороший заголовочный файл для AddShow.dll, который называется AddShow.h
DLLAPI int __cdecl AddTwoNum(int n, double f);
Затем я использовал этот отличный инструмент для создания .lib-файла:
http://www.binary -soft.com / dll2lib / dll2lib.htm
Что теперь?
Я попытался щелкнуть правой кнопкой мыши и «Добавить», затем «Класс», затем «Класс компонента», затем указать путь и имя библиотеки DLL, но я получил 8 миль раздувания, весь набор инструментов Windows и новый файл AddShow.cpp.
Мой код на C ++ действительно прост:
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;
}
Как мне просто заставить IDE связать файл .lib?
ДОБАВЛЕНО:
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 ==========