Информация об изменениях

Сообщение Почему может быть unresolved external, если функция есть? от 28.06.2023 23:19

Изменено 28.06.2023 23:59 Shmj

Почему может быть unresolved external, если функция есть?
У меня как в анекдоте:

Компьютер не видит принтера, я уже и монитор на него повернул, а он все равно пишет что не видит. Что мне делать?
— Пальцем покажи.


А конкретно. Добавил в проект заголовки и исходники вручную. Ошибка при линковке:

error LNK2001: unresolved external symbol "public: double __cdecl myns1::Class1::Function1(void)const " (?Function1@Class1@myns1@@QEBANXZ)


Эта функция в пространстве имен myns1, класс Class1 точно есть. Сигнатура совпадает.

И еще же сотни функций, которые видны и с ними проблем нет. Однако это и еще с два десятка которые почему-то не видны линкеру, хотя вроде с ними все в порядке.

И вызывается из С++ не из C, думал в этом проблема. В проекте разные расширения файлов — и cc и cpp — вроде не должно быть проблемой?

В общем — из-за чего такое может быть? Может ли быть, если нарушен порядок сборки?
Почему может быть unresolved external, если функция есть?
У меня как в анекдоте:

Компьютер не видит принтера, я уже и монитор на него повернул, а он все равно пишет что не видит. Что мне делать?
— Пальцем покажи.


А конкретно. Добавил в проект заголовки и исходники вручную. Ошибка при линковке:

error LNK2001: unresolved external symbol "public: double __cdecl myns1::Class1::Function1(void)const " (?Function1@Class1@myns1@@QEBANXZ)


Эта функция в пространстве имен myns1, класс Class1 точно есть. Сигнатура совпадает.

И еще же сотни функций, которые видны и с ними проблем нет. Однако это и еще с два десятка которые почему-то не видны линкеру, хотя вроде с ними все в порядке.

И вызывается из С++ не из C, думал в этом проблема. В проекте разные расширения файлов — и cc и cpp — вроде не должно быть проблемой?

В общем — из-за чего такое может быть? Может ли быть, если нарушен порядок сборки? Если может быть из-за нарушения порядка сборки — то хотелось бы мин. пример.

Еще думаю — может ли быть, если в проекте вперемешку с и с++ -файлы?