前提・実現したいこと
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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/30 14:04