Я пытаюсь включить код 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 из кода C ++ в различном проекте VS2010 ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение