Ошибки компоновщика только когда я вызываю функцию к недавно добавленному файлу заголовка - PullRequest
0 голосов
/ 28 июня 2010

Итак, я недавно добавил в проект файл заголовка (и соответствующий исходный файл) вместе с файлом заголовка, который требуется файл, и файлом объекта, который требуется файл.

Все компилируется нормально, если толькоЯ фактически вызываю одну из функций, объявленных в только что добавленном заголовочном файле.

Это все с использованием Visual Studio Express 2008.

Чтобы быть более понятным: Добавлено:

E4407B.h (Мой код)

E4407B.cpp (Также мой код, компилируется как c)

ni4882.h (не мой - от National Instruments) ni4882.obj

Когда я вызываю функцию, расположенную в E4407B.h, я получаю следующую ошибку:

4>E4407B.obj : error LNK2005: _SA_GPIB_INTF already defined in test.obj
4>ni4882.obj : warning LNK4217: locally defined symbol _fclose imported in function _LoadFunction@4
4>ni4882.obj : warning LNK4217: locally defined symbol _fread imported in function _LoadFunction@4
4>ni4882.obj : warning LNK4217: locally defined symbol _fopen imported in function _LoadFunction@4
4>ni4882.obj : error LNK2019: unresolved external symbol __imp__rand referenced in function _LoadFunction@4
4>ni4882.obj : error LNK2019: unresolved external symbol __imp__srand referenced in function _LoadFunction@4
4>ni4882.obj : error LNK2019: unresolved external symbol __imp__time referenced in function _LoadFunction@4

test.c - это место, где находится main.

Редактировать: я имел вошибка, возникающая при создании другого решения, которое по какой-то причине находилось в сборке.

1 Ответ

1 голос
/ 28 июня 2010

Похоже, что ваш заголовок определяет объекты (_SA_GPIB_INTF, _fclose и т. Д.), Когда он должен только объявлять их. Любые объекты, которые требуют хранения, должны быть определены только в одном исходном файле.

Кроме того, неразрешенные ошибки внешних символов означают, что вы упускаете библиотеку в процессе компоновки (похоже на стандартную библиотеку c).

Не видя самого кода заголовка, трудно получить более конкретную информацию.

...