У меня есть файл sample.c , в котором определена нестатическая функция
Источник: sample.c
#if defined(__cplusplus)
extern "C" {
#endif
int get_sample_value()
{
return 1000;
}
#if defined(__cplusplus)
}
#endif
Есть чистый Проект C ++ SDK, sample_sdk , который в основном генерирует пару static-libs, где функция get_sample_value () используется в одном из исходных файлов следующим образом:
Источник: sample_sdk_source.cpp
extern int get_sample_value();
static void do_processing()
{
int sample_value = get_sample_value();
process( sample_value );
}
Вышеупомянутый sample.c будет скомпилирован в другом C ++ / CLI приложении с графическим интерфейсом, SampleViewer где sample_sdk libs включены в это приложение. Но при компиляции SampleViewer мы получаем следующую ошибку:
libsample-sdk-x86.lib (sample_sdk_source.obj): ошибка LNK2019: неразрешенный внешний символ «int __cdecl get_sample_value ()» (? Get_sample_value (? Get_sample_value)@@ YAPBUint @@ XZ) ссылка на функцию "public: static void __cdecl do_processing ()" (? Do_processing @@ SAXXZ)
Я также пытался использовать ту же функцию из SampleViewer :: main. файл cpp, но такая же ошибка существует. Есть ли проблема при доступе к функции, определенной в файле C как extern из среды C ++ / CLI?