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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Visual Studio

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

C++

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

Q&A

2回答

1174閲覧

c++によるtobii stream engine のサンプルコードの実行

bow_9629

総合スコア0

Visual Studio

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

C++

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

0グッド

0クリップ

投稿2021/07/30 07:22

前提・実現したいこと

visual studio2017を用いてtobii stream engineのサンプルコードの実行をしようと考え、サンプルコードのサイト(https://developer.tobii.com/product-integration/stream-engine/getting-started/)に書いてある手順の通りに設定を行い実行を行ってみたところ、以下のようなエラーが発生してしまいどう解決すればいいかわからず困っています。

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

エラーメッセージ LNK2019 未解決の外部シンボル __imp_tobii_api_create が関数 main で参照されました。 LNK2019 未解決の外部シンボル __imp_tobii_api_destroy が関数 main で参照されました。 LNK2019 未解決の外部シンボル __imp_tobii_enumerate_local_device_urls が関数 main で参照されました。 LNK2019 未解決の外部シンボル __imp_tobii_wait_for_callbacks が関数 main で参照されました LNK2019 未解決の外部シンボル __imp_tobii_device_create が関数 main で参照されました。 LNK2019 未解決の外部シンボル __imp_tobii_device_destroy が関数 main で参照されました。 LNK2019 未解決の外部シンボル __imp_tobii_device_process_callbacks が関数 main で参照されました。 LNK2019 未解決の外部シンボル __imp_tobii_gaze_point_subscribe が関数 main で参照されました。 LNK2019 未解決の外部シンボル __imp_tobii_gaze_point_unsubscribe が関数 main で参照されました。

該当のソースコード

c++

1ソースコード 2#include <tobii.h> 3#include <tobii_streams.h> 4#include <stdio.h> 5#include <assert.h> 6#include <string.h> 7 8void gaze_point_callback(tobii_gaze_point_t const* gaze_point, void* /* user_data */) 9{ 10 // Check that the data is valid before using it 11 if (gaze_point->validity == TOBII_VALIDITY_VALID) 12 printf("Gaze point: %f, %f\n", 13 gaze_point->position_xy[0], 14 gaze_point->position_xy[1]); 15} 16 17void url_receiver(char const* url, void* user_data) 18{ 19 char* buffer = (char*)user_data; 20 if (*buffer != '\0') return; // only keep first value 21 22 if (strlen(url) < 256) 23 strcpy_s(buffer, sizeof(buffer), url); 24} 25 26int main() 27{ 28 // Create API 29 tobii_api_t* api = NULL; 30 tobii_error_t result = tobii_api_create(&api, NULL, NULL); 31 assert(result == TOBII_ERROR_NO_ERROR); 32 33 // Enumerate devices to find connected eye trackers, keep the first 34 char url[256] = { 0 }; 35 result = tobii_enumerate_local_device_urls(api, url_receiver, url); 36 assert(result == TOBII_ERROR_NO_ERROR); 37 if (*url == '\0') 38 { 39 printf("Error: No device found\n"); 40 return 1; 41 } 42 43 // Connect to the first tracker found 44 tobii_device_t* device = NULL; 45 result = tobii_device_create(api, url, TOBII_FIELD_OF_USE_INTERACTIVE, &device); 46 assert(result == TOBII_ERROR_NO_ERROR); 47 48 // Subscribe to gaze data 49 result = tobii_gaze_point_subscribe(device, gaze_point_callback, 0); 50 assert(result == TOBII_ERROR_NO_ERROR); 51 52 // This sample will collect 1000 gaze points 53 for (int i = 0; i < 1000; i++) 54 { 55 // Optionally block this thread until data is available. Especially useful if running in a separate thread. 56 result = tobii_wait_for_callbacks(1, &device); 57 assert(result == TOBII_ERROR_NO_ERROR || result == TOBII_ERROR_TIMED_OUT); 58 59 // Process callbacks on this thread if data is available 60 result = tobii_device_process_callbacks(device); 61 assert(result == TOBII_ERROR_NO_ERROR); 62 } 63 64 // Cleanup 65 result = tobii_gaze_point_unsubscribe(device); 66 assert(result == TOBII_ERROR_NO_ERROR); 67 result = tobii_device_destroy(device); 68 assert(result == TOBII_ERROR_NO_ERROR); 69 result = tobii_api_destroy(api); 70 assert(result == TOBII_ERROR_NO_ERROR); 71 return 0; 72} 73

試したこと

リンカーの追加の依存ファイルや、追加のインクルード・ライブラリディレクトリの追加などstream engineサイト内の手順は間違いなく完了できていて、visual studio2019でも同様のエラーが発生しました
また元のサイトの22行目のstrcpy( buffer, url );ではエラーが発生したため、これを解決するためにstrcpy_s(buffer, sizeof(buffer), url);に変更しました

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

visual studio2017
tobii stream engine 4.1.0

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

エラー的にはDLLのインポートライブラリのシンボルが参照出来ていない感じを受けるので、必要なlibファイルを

C

1#pragma comment(lib, "ライブラリ名")

で指定してあげれば良いのではないでしょうか。

投稿2021/07/30 08:08

編集2021/07/30 08:09
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bow_9629

2021/07/30 14:04

tobii_stream_engine.libを指定したいので #pragma comment(lib, "tobii_stream_engine.lib") を追加してみましたが駄目でした...
guest

0

ビルド法が間違っている、あるいはライブラリの指定が抜けている、でしょう。
そのエラーで出ている関数はどこにあるものなんでしょうか

投稿2021/07/30 07:27

y_waiwai

総合スコア87800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bow_9629

2021/07/30 14:07

_imp_のないtobii_api_createやtobii_api_destroyなどはすべて追加ライブラリとしてリンクしたtobii_stream_engine.lib内にあるのですが_imp_のついたものについてはわかりませんでした 申し訳ありません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問