Visual Studio 2008 IDE - Статическое связывание библиотеки C Dll - PullRequest
0 голосов
/ 03 октября 2009

Я испытываю разочарование ^ Разочарование в этой% & $ ^ & 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 ==========

1 Ответ

2 голосов
/ 03 октября 2009

Вы можете перейти на:

Свойства проекта -> Линкер -> Ввод

Затем добавьте ваш .lib в «Дополнительные зависимости».

Дополнительно можно поставить

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

в вашем файле .cpp.

...