質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.35%

  • C++

    2415questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Visual Studio

    1205questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • AR(Augmented Reality)

    34questions

    AR(Augmented Reality)とは、拡張現実のことです。人が認識する現実の環境で視覚・聴覚などの知覚が感知する情報をコンピュータで拡張する技術、もしくはその環境そのものを表す言葉です。

ArToolKitにてサンプルを動かす

受付中

回答 0

投稿 2017/12/08 19:00

  • 評価
  • クリップ 0
  • VIEW 41

akito0705

score 0

前提・実現したいこと

ArToolKitを使ってサンプルを動かしたいと思っています。環境はVS2017、ArToolKit、Windows10です。

発生している問題・エラーメッセージ

下記のようなエラーがでてきてしまい動きません。

LNK2019    未解決の外部シンボル _fprintf が関数 _arSavePatt で参照されました。        
LNK2019    未解決の外部シンボル _fscanf が関数 _arLoadPatt で参照されました。    

該当のソースコード

// ConsoleApplication1.cpp : アプリケーションのエントリ ポイントを定義します。

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

#include <AR/ar.h>
#include <AR/param.h>
#include <AR/video.h>
#include <AR/gsub.h>


const char *vconf_name = "Data/WDM_camera_flipV.xml";
const char *cparam_name = "Data/camera_para.dat";
const char *patt_name = "Data/hiro.patt";

int patt_id;
double patt_trans[3][4];
double patt_center[2] = { 0.0,0.0 };
double patt_width = 80.0;
int thresh = 100;

void MainLoop(void);
void KeyEvent(unsigned char key, int x, int y);
void MouseEvent(int button, int state, int x, int y);
void Cleanup(void);
void DrawObject(void);


int main(int argc, char **argv)
{
    ARParam cparam;
    ARParam wparam;
    int xsize, ysize;

    glutInit(&argc, argv);

    char *vconf_name2 = const_cast< char *>(vconf_name);
    if (arVideoOpen(vconf_name2) < 0) {
        printf("ビデオデバイスのエラー");
        return -1;
    }

    if (arVideoInqSize(&xsize, &ysize) < 0) return -1;

    if (arParamLoad(cparam_name, 1, &wparam) < 0) {
        printf("カメラパラメータの読み込みに失敗しました");
        return -1;
    }

    arParamChangeSize(&wparam, xsize, ysize, &cparam);
    arInitCparam(&cparam);

    if ((patt_id = arLoadPatt(patt_name)) < 0) {
        printf("パターンファイルの読み込みに失敗しました\n");
        return -1;
    }

    argInit(&cparam, 1.0, 0, 0, 0, 0);

    arVideoCapStart();

    argMainLoop(MouseEvent, KeyEvent, MainLoop);

    return 0;
}


void MainLoop(void) {

    ARUint8 *image;
    ARMarkerInfo *marker_info;
    int marker_num;
    int j, k;

    if ((image = (ARUint8 *)arVideoGetImage()) == NULL) {
        arUtilSleep(2);
        return;
    }

    argDrawMode2D();
    argDispImage(image,0,0);

    if (arDetectMarker(image, thresh, &marker_info, &marker_num) < 0) {
        Cleanup();
        exit(0);
    }

    arVideoCapNext();

    k = -1;
    for (j = 0; j < marker_num; j++) {
        if (patt_id == marker_info[j].id) {
            if (k == -1) k = j;
            else if (marker_info[k].cf < marker_info[j].cf) k = j;
        }
    }

    if (k != -1) {
        arGetTransMat(&marker_info[k], patt_center, patt_width, patt_trans);

        DrawObject();
    }

    argSwapBuffers();

}


void DrawObject(void) {

    double gl_para[16];

    argDrawMode3D();
    argDraw3dCamera(0, 0);

    argConvGlpara(patt_trans, gl_para);
    glMatrixMode(GL_MODELVIEW);
    glLoadMatrixd(gl_para);

    glTranslatef(0.0, 0.0, 20.0);
    glColor3f(0.0, 1.0, 0.0);
    glLineWidth(3.0);
    glutWireCube(40.0);
}


void KeyEvent(unsigned char key, int x, int y) {
    if (key == 0x1b) {
        Cleanup();
        exit(0);
    }
}


void MouseEvent(int button, int state, int x, int y) {
    printf("ボタン:%d 状態:%d 座標:(x,y)=(%d,%d) \n", button, state, x, y);
}


void Cleanup(void) {
    arVideoCapStart();
    arVideoClose();
    argCleanup();
}

試したこと

Includeファイル、Libファイル等をプロパティより設定するのはほかのサイトで確認しながら行いましたが、動きません。
エラーの内容からlibARd.libでエラーが起きてると思うんですが解決方法がわかりません。

補足情報(言語/FW/ツール等のバージョンなど)

上記の通りです。よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.35%

関連した質問

同じタグがついた質問を見る

  • C++

    2415questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Visual Studio

    1205questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • AR(Augmented Reality)

    34questions

    AR(Augmented Reality)とは、拡張現実のことです。人が認識する現実の環境で視覚・聴覚などの知覚が感知する情報をコンピュータで拡張する技術、もしくはその環境そのものを表す言葉です。