Я свято убеждён, что это крайне элементарная вещь, которую каждый живой человек может выполнить в совершенстве, но у меня почему-то это не работает. FAQ и многие другие темы/вопросы, найденные через Google, не исправили это для меня.
Ситуация следующая: у меня есть один проект Visual Studio 2010. Этот проект находится в решении Visual Studio 2010. В проекте есть следующие файлы:
доп.ч:
class Adder {
public:
static int add(int i1, int i2);
};
добавить.cpp:
class Adder {
public:
static int add(int i1, int i2) {
return i1 + i2;
}
};
основной.cpp:
#include "add.h"
int main() {
Adder::add(5, 6);
return 0;
}
При попытке запустить этот код, который мне кажется довольно простым, я получаю следующую ошибку компоновщика:
main.obj : error LNK2019: unresolved external symbol "public: static int __cdecl Adder::add(int,int)" (?add@Adder@@SAHHH@Z) referenced in function _main
Насколько я понял, это означает, что компоновщик не смог найти реализацию Adder::add(). Однако файлы находятся в одном и том же проекте, сгенерированные файлы .obj находятся в одной и той же папке, и каждый учебник, который я читал по теме классов и файлов заголовков, говорит мне, что это должно работать.
До сих пор я пробовал следующие потенциальные решения:
- Добавьте собственную папку проекта в дополнительные файлы include/dependencies/sources/whatever.
- Добавляйте внешние идентификаторы к разным вещам
- Используйте отдельное пространство имен
- Различные другие небольшие корректировки в надежде, что они будут работать.
Итак, я думаю, моя проблема сводится к следующему: как я могу заставить компоновщика заметить файл add.cpp? Любая помощь приветствуется, я безуспешно потратил на это несколько часов, хотя мне это кажется чрезвычайно простой вещью.