Я сталкиваюсь с очень странной проблемой связи с VC 2010. Теперь я разрабатываю библиотеку C++, и для облегчения отладки для некоторых функций библиотека предоставляет два функциональных интерфейса. Например,
class Object
{
public:
int fun(std::vector<int> &auxiliary_variable_for_debug_purpose);
int fun();
}
Также можно реорганизовать этот класс таким образом:
class Object
{
public:
#ifdef DEBUG_INDICATOR
int fun(std::vector<int> &auxiliary_variable_for_debug_purpose);
#else
int fun();
#endif
}
Поступая таким образом, я за исключением того, чтобы дать пользователю понятный интерфейс.
Проблема, с которой я сталкиваюсь сейчас, - это int fun(std::vector<int> &auxiliary_variable_for_debug_purpose);
и int fun();
вызывается другая функция, называемая void help_function()
, которая объявляется и определяется в разделенных файлах.
file.h
void help_function()
а также
file.cpp
void help_function()
{
// do something
}
Как вы видите, void help_function()
одинакова независимо от того, определен ли DEBUG_INDICATOR
или нет. Если я определяю DEBUG_INDICATOR
, я могу скомпилировать класс с функцией int fun()
без каких-либо проблем. Однако, когда я не определил DEBUG_INDICATOR
, возникает ошибка LNK2001
, предполагающая нерешенный внешний символ void help_function()
. Я пробовал все возможные способы понять это, но потерпел неудачу. Любые идеи будут оценены.
РЕДАКТИРОВАТЬ
Библиотека, которую я создал, представляет собой динамическую библиотеку. Независимо от того, определен ли DEBUG_INDICATOR
, библиотека может быть построена, а ошибка ссылки возникает только при вызове библиотеки.
Поскольку вы не отправили точное сообщение об ошибке, которое вы получаете, эта ссылка MSDN может вам помочь.
Совет. Будьте конкретны, задавая свой вопрос, если вы хотите получить точные ответы.
int fun(std::vector<int> &auxiliary_variable_for_debug_purpose);
когда определеноDEBUG_INDICATOR
неint fun()
.