Member 13522230 Ответов: 2

Как связать то .dll к моей основной программе в базовом приложении MFC dialogue


Я создал библиотеку dll в MFC с именем CalcDLL. Я добавил класс add в этот проект dll,в котором я написал код для математических операций,таких как сложение,вычитание, умножение, деление.
После того, как я создал новый проект с диалоговым приложением MFC на основе. В том, что для вызова я добавил код для добавления.
Для добавления CalcDLL.dll к этому основному проекту в меню project -> properties->configuration properties->linker->input->Дополнительные зависимости я добавил путь dll. Но это показывает
Ошибка 1 ошибка LNK1107: неверный или поврежденный файл: не удается прочитать по адресу 0x328
Как устранить эту ошибку, может ли кто-нибудь объяснить мне, и мне нужно использовать только С.dll не с добавлением .lib

Что я уже пробовал:

В основном проекте:
void CCalciMainDlg::OnBnClickedAdd()
{

САПР в;
Num1 = GetDlgItemInt(IDC_EDIT_NUM1);
Num2 = GetDlgItemInt(IDC_EDIT_NUM2);
int opt = 1;
Выход = a.операция(Num1, Num2,opt);

SetDlgItemInt(IDC_EDIT_OUTPUT, Output);
}

В проекте Dll:CalcDLL
Добавить Class:Add.cpp

int CAdd::операция(int nNum1, int nNum2,int opt)
{
int результат;
переключатель (opt)
{
корпус 1:
результат = nNum1 + nNum2;
перерыв;
случай 2:
результат = nNum1 - nNum2;
перерыв;
случай 3:
результат = nNum1 * nNum2;
перерыв;
случай 4:
результат = nNum1 / nNum2;
перерыв;
}
возвращаемый результат;
}

2 Ответов

Рейтинг:
2

Jochen Arndt

Вы должны добавить следующее либ файл в настройках ваших проектов или используйте pragma директива в одном из ваших исходных файлов (комментарий (C-C++)[^]):

#pragma comment(lib, "[path\]libname")
При создании DLL-проекта соответствующие либ файл создается и помещается вместе с библиотекой DLL в выходной каталог сборки проекта.

Если вы не хотите использовать a либ файл, вы можете загрузить DLL во время выполнения с помощью Функция LoadLibrary (Windows)[^]. Но тогда вы должны объявить прототипы для экспортируемых функций и получить указатели функций с помощью Функция GetProcAddress (Windows)[^].


Рейтинг:
12

Richard MacCutchan

Вам нужно добавить свое .lib-файл для ваших параметров компоновщика, а не dll. То.LIB-файл используется компоновщиком для удовлетворения ссылок на ваши DLL-функции. Сама библиотека DLL будет загружена во время выполнения при запуске приложения.


Member 13522230

Спасибо Вам за вашу помощь, но с добавлением .lib в свойства компоновщика. Я получаю системную ошибку, то есть программа не может запуститься, потому что CalcDLL.dll отсутствует на вашем компьютере.
Можете ли вы сказать по этому вопросу.

Richard MacCutchan

Где он находится CalcDLL.dll-что?