2014-07-31 2 views
0

Я получаю сообщение об ошибке LNK2001, когда пытаюсь скомпилировать следующий код, хотя я настроил дополнительный каталог include компилятора и дополнительный каталог библиотеки компоновщика.Visual Studio 2012, код C/C++, ошибка LNK2001: неразрешенный внешний символ

#include "stdafx.h" 
#include <QCamApi.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 


    QCam_Err   errcode = qerrSuccess ; 
    errcode = QCam_LoadDriver(); 


    if(errcode == qerrSuccess){QCam_ReleaseDriver();} 

    return 0; 
} 

У меня также есть пример, который делает работу с теми же настройками компилятора/линкера

#include <stdio.h> 
#include <stdlib.h> 
#include <QCamApi.h> 

//===== Main ============================================================== 
int main(int argc, char* argv[]) 
{ 


    QCam_Err   errcode = qerrSuccess ; 

    errcode = QCam_LoadDriver(); 

    if(errcode == qerrSuccess) {QCam_ReleaseDriver();} 

    return 0; 
} 

еще как-то я не могу показаться, чтобы быть в состоянии начать это с нуля. Почему это не работает, если я запускаю пустой проект и просто вставляю этот код в .cpp? Извините, если это тривиальный вопрос и большое спасибо за ваше время!

ответ

0

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

Я думаю, что это вызывает проблемы с связями.

Here - более полное обсуждение.

0

Чтобы связать внешнюю функцию, написанную на C с C++, они должны быть объявлены как extern "C".

Вы должны добавить в каждое объявление вызываемые функции QCamApi.h ключевое слово extern "C" или попытаться скомпилировать ваш код на простом C, а не на C++.

 Смежные вопросы

  • Нет связанных вопросов^_^