Ошибка линкера при вызове функции C из кода C ++ в различном проекте VS2010C++

Программы на C++. Форум разработчиков
Anonymous
Ошибка линкера при вызове функции C из кода C ++ в различном проекте VS2010

Сообщение Anonymous »

Я пытаюсь включить код C, который я нашел в наш проект C ++. Функция определяется как эта в файле C. < /p>

#ifdef __cplusplus
extern "C" {
#endif
extern char *dtoa(double, int, int, int *, int *, char **);
extern char *g_fmt(char *, double);
extern void freedtoa(char*);
#ifdef __cplusplus
}
#endif

char *
g_fmt(register char *b, double x)
{
< /code>

Проект VS, который я включаю, - это создание DLL. Файл собирается как C, другие файлы в проекте собираются как C ++. < /p>

Я добавил заголовок, чтобы включить в мои файлы c ++ < /p>

#ifndef G_FMT_H
#define G_FMT_H
#ifdef __cplusplus
extern "C" {
#endif
extern char *dtoa(double, int, int, int *, int *, char **);
extern char *g_fmt(char *, double);
extern void freedtoa(char*);

#ifdef __cplusplus
}
#endif
#endif //G_FMT_H
< /code>

В другом проекте в решении я включаю свой заголовок и попробую вызвать функцию g_fmt. < /p>

#include "header.h"
...
g_fmt(my_array, 2.0);
< /code>

Этот проект ссылается на другой, я могу вызвать функции C ++ в первой библиотеке без каких -либо проблем. Однако добавление вышеупомянутой строки дает мне ошибку LNK2001. < /P>

error LNK2001: unresolved external symbol g_fmt
< /code>

Я нашел ряд других вопросов о микшировании C и C ++, и я, кажется, сделал все необходимое с ключевыми словами Extern в нужных местах, однако я все еще не в состоянии связать. Есть ли что -нибудь конкретное, что мне нужно сделать в VS2010?

Подробнее здесь: https://stackoverflow.com/questions/305 ... 10-project

Вернуться в «C++»