Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Создание статической библиотеки


Автор: бУРов 18.4.2013, 14:22
Здарвствуйте!
Может быть мой вопрос тоже к этой теме подойдёт.
Хочу научиться создавать статическую LIB-библиотеку и ее использовать.
Для этого создал два проекта в VS2008 (x32 в Win7):
 — utlib.LIB -- функция "hash", которая должна вызваться из EXE
функция "пустая", ничего не выполняет пока
 — CalLIB.EXE -- вызов функции из LIB
Хочу добиться сборки EXE-проектка, и его запуска в отладчике.

Но EXE-проект не собирается.

В свойства проекта добавил нужные ссылки
— С/С++-Доп.каталоги включения=..\..\utlib\utlib
— Компоновщик-Доп.каталоги библиотек=..\..\utlib\Debug
— Ввод-Доп.зависимости=..\..\utlib\Debug\utlib.lib
— добавил ключ /MTd для LIB-преокта

Вызов записан так:
#include "utlib.h"
#pragma comment(lib, "utlib.lib") // не знаю, нужно ли если в свойствах пректа уже настройка есть
 
void CCallLIBDlg::OnBnClickedButton1()
{
    utlib::hash(CString &m_sUNum);
}


Получаю ошибку (см скрин)
На всякий случай http://zalil.ru/34448658 положил на zalil.ru
Может кто поможет собрать?

Автор: Earnest 18.4.2013, 16:52
Библиотеку, действительно, подключать нужно один раз - либо через comment, либо через зависимости в солюшене, либо в параметрах линкера, но ошибка вряд ли в этом.
Проверь, что при компиляции библиотеки и в вызывающем коде пользовании используется одно и то же описание функции (один и тот же хедер). А потом проверь, что он одинаково интерпретируется - т.е. настройки проектов совпадают (декларация по умолчанию, Юникод, интрепретация w_char)
Вызов utlib::hash(CString &m_sUNum) тоже выглядит подозрительно. Неужто компилятор не ругается? Скорее как определение, а не как вызов...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)