У меня есть класс, экспортированный в dll. И получил встроенные функции в этом классе экспортируемого:ошибка привязки встроенной функции redefinition
header.h
class MODULE_EXPORT A
{
public:
int GetInt(){ return iSomeInt; }
};
Когда я включить этот заголовочный файл в отдельном модуле. Я получил ошибку LNK2005, что означает: GetInt() уже определен.
Если я поместил определение функции в файл .cpp. Ошибка НЕТ.
GetInt является встроенной функцией, если я определяю ее таким образом в файле заголовка, правильно? так почему ошибка переустановки связи? Я использую компилятор vC++. (Visual Studio 2010).
EDIT:
#pragma once
уже был добавлен в файл заголовка. Забыл упомянуть об этом.
Вы не должны экспортировать встраиваемую функцию, должны ты ? –
ну, это пункт. Воодушевление! @YvesDaoust –
Если вы помечаете класс как экспортированный, каждый .cpp, который включает определение класса, генерирует копию метода. Две проблемы: компоновщик будет жаловаться, и функция может не быть встроена! Воздерживаться от экспорта метода. –