0

コンパイラの追加のインクルード ディレクトリとリンカーの追加のライブラリ ディレクトリを構成したにもかかわらず、次のコードをコンパイルしようとするとエラー 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 に貼り付けるだけでは機能しないのはなぜですか? 些細な質問で申し訳ありませんが、お時間をいただきありがとうございます。

4

2 に答える 2

0

C++ から C で記述された外部関数をリンクするには、 として宣言する必要がありますextern "C"

QCamApi.h の呼び出された関数の各宣言にextern "C"キーワードを追加するか、C++ ではなくプレーン C でコードをコンパイルしてみてください。

于 2014-07-31T09:11:41.130 に答える
0

作業例では main を別々に使用していますが、他のプロジェクトでは _tmain を別々に使用していることは、プロジェクトが異なるように設定されていることを意味しているようです。

これがリンクの問題を引き起こしていると思います。

ここに、より完全な議論があります。

于 2014-07-31T08:55:15.647 に答える