Ссылка на библиотеку никак не может ... VS 2010 lib - PullRequest
2 голосов
/ 20 июня 2011

Я могу успешно создавать и использовать библиотеку. Позднее, только если библиотека и другой проект находятся в одном решении ....
Я скопировал файл isam.lib isam.dll isam.exp isam.h в папку с именем lib ...

Тогда я создал новое решение ..

Установить компоновщик -> Ввод для использования моего isam.lib ... Сборка не удалась, не могу найти этот файл ...
Установите в каталоги VC ++, включающие каталоги и каталоги библиотек, папку lib ...

Сборка прошла успешно ..

Также я задаю путь для C / C ++. Общие дополнительные каталоги включения
Set Linker General Дополнительные каталоги библиотеки

Сборка в порядке ....

Тогда я включаю мой файл isam ..

    #include "stdafx.h"
#include <isam.h>

    int _tmain(int argc, _TCHAR* argv[])
    {
        isopen("lamogio",2);
        return 0;
    }

Здание терпит неудачу ...

Ошибка 1 ошибка LNK2019: неразрешенный внешний символ «__declspec (dllimport) int __cdecl isopen (char const *, int)» (_ imp ? Isopen @@ YAHPBDH @ Z), на который есть ссылка в функции _wmain C: \ Users \ Parhs \ Documents \ visual studio 2010 \ Projects \ testdll2 \ testdll2 \ testdll2.obj testdll2

Ошибка 2: ошибка LNK1120: 1 неразрешенный внешний файл C: \ Users \ Parhs \ Documents \ visual studio 2010 \ Projects \ testdll2 \ Debug \ testdll2.exe 1 1 testdll2

1 Ответ

3 голосов
/ 20 июня 2011

Итак, давайте предположим, что вы сказали компоновщику связать isam.lib с настройкой компоновщика, ввода, дополнительных зависимостей.Тогда возможная причина ошибки компоновщика в том, что вы написали код isam на C и используете его в программе на C ++.Вы должны сообщить компилятору, что код был написан на C:

#include "stdafx.h"
extern "C" {
    #include <isam.h>
}

Более типичное решение - поместить его в файл isam.h, чтобы его можно было использовать в любом случае.Как это:

#ifdef __cplusplus
  extern "C" {
#endif

// The declarations
//...

#ifdef __cplusplus
}
#endif
...