Я работаю над приложением C / C ++ в Visual Studio 2010. В решении есть несколько проектов, которые скомпилированы и объединены в один исполняемый файл.Я пытаюсь добавить операторы print для отладки нескольких критических функций.
Я добавил оператор printf в функцию в одном из файлов .c.Я позаботился о том, чтобы включить <stdio.h>
.Заголовок C включен в файл C ++ где-то выше.Я знаю, что существуют различия между работой компоновщиков C и C ++ и extern
принудительным поведением.Однако я не специалист по нюансам.
Код настроен следующим образом:
// proc.h
#ifdef __cplusplus
extern "C" {
#endif
void do_stuff();
#ifdef __cplusplus
}
#endif
-----------------------------------------------
// proc.c
#include "proc.h"
#include <stdio.h>
void do_stuff()
{
printf("Hello from proc.c -- do_stuff()");
// Some other stuff
}
Когда я создаю приложение, я вижу следующее сообщение об ошибке в окне вывода VS:[proj path]\common.lib(proc.obj) : error LNK2019: unresolved external symbol _printf referenced in function _do_stuff@20
Я также попытался поместить #include <stdio.h>
в заголовочный файл, а не в файл c.В этом случае я получаю:error LNK2001: unresolved external symbol printf