Странная ошибка ссылки при определении #ifdef #else

0

Я сталкиваюсь с очень странной проблемой связи с 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, библиотека может быть построена, а ошибка ссылки возникает только при вызове библиотеки.

  • 2
    Каково ваше точное сообщение об ошибке?
  • 0
    Вы используете int fun(std::vector<int> &auxiliary_variable_for_debug_purpose); когда определено DEBUG_INDICATOR не int fun() .
Показать ещё 5 комментариев
Теги:
visual-studio-2010

1 ответ

0

Поскольку вы не отправили точное сообщение об ошибке, которое вы получаете, эта ссылка MSDN может вам помочь.

Совет. Будьте конкретны, задавая свой вопрос, если вы хотите получить точные ответы.

  • 0
    Спасибо за Ваш ответ. Точная ошибка в том, что внешний символ void help_function () не может быть разрешен. У меня также нет больше информации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню