Использование MSVC 2015
Все шло отлично, пока я не представил несколько новых строк кода:
До:
static tensorflow::SessionOptions MakeSessionOptions() {
tensorflow::SessionOptions options;
tensorflow::ConfigProto* config = &options.config;
auto* device_count = options.config.mutable_device_count();
device_count->insert({ "CPU", 1 });
device_count->insert({ "GPU", 1 });
return options;
}
После
static tensorflow::SessionOptions MakeSessionOptions() {
tensorflow::SessionOptions options;
tensorflow::ConfigProto* config = &options.config;
auto* device_count = options.config.mutable_device_count();
auto* gpu_options = options.config.mutable_gpu_options();
gpu_options->set_allow_growth(true);
gpu_options->set_per_process_gpu_memory_fraction(0.8);
device_count->insert({ "CPU", 1 });
device_count->insert({ "GPU", 1 });
return options;
}
Как только новый код вставлен, я получаю следующую ошибку связывания
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol "public: static class tensorflow::GPUOptions * __cdecl google::protobuf::Arena::CreateMessage<class tensorflow::GPUOptions>(class google::protobuf::Arena *)" (??$CreateMessage@VGPUOptions@tensorflow@@@Arena@protobuf@google@@SAPEAVGPUOptions@tensorflow@@PEAV012@@Z) referenced in function "struct tensorflow::SessionOptions __cdecl MakeSessionOptions(void)" (?MakeSessionOptions@@YA?AUSessionOptions@tensorflow@@XZ) rotobotmaskrcnn C:\msys64\home\hodgefamily\dev\openfx_gpu\Support\Plugins\RotobotMaskRCNN\rotobotmaskrcnn.obj 1
Так кто-нибудь знает, что .lib файл содержит символы для google :: protobuf :: Arena.
Я в основном следовал инструкциям contrib cmake для Tensorflow r1.5
здесь:
https://github.com/tensorflow/tensorflow/blob/r1.5/tensorflow/contrib/cmake/README.md
Где скрываются эти символы?