pbrt вопрос о неразрешенном внешнем символе - PullRequest
0 голосов
/ 04 августа 2020

В последнее время я изучаю pbrt (физический рендеринг). Однако у меня есть вопрос по его использованию в VS2019. Я создал систему pbrt (используя команду «git clone --recursive https://github.com/mmp/pbrt-v3/» ) и включил ее в VS. После того, как я написал простые тестовые коды:

#define GOOGLE_GLOG_DLL_DECL
#include "core\pbrt.h"
#include "core\geometry.h"
#include "core\transform.h"
#include <iostream>
using namespace pbrt;
int main() {
    Transform T = Scale(2,3,5);
    pbrt::Vector3f a(1, 1, 1);
    pbrt::Vector3f b(2, 1, 1);
    pbrt::Vector3f c = a + b;
    pbrt::Point3f p0(0, 0, 0);
    pbrt::Ray r(p0, a);
    std::cout << r << std::endl;
}

, VS2019 выдает множество нерешенных ошибок внешних символов, которые я не показал здесь все:

Код серьезности Описание Строка файла проекта Ошибка состояния подавления LNK2001 неразрешенный внешний символ "int __cdecl Imf :: globalThreadCount (void)" (? globalThreadCount@Imf@@YAHXZ) PBRT E: \ PBRT \ PBRT \ libpbrt.lib (imageio.obj) 1

Описание кода серьезности Ошибка состояния подавления строки файла проекта LNK2001 неразрешенный внешний символ "publi c: __cdecl Imf :: RgbaOutputFile :: RgbaOutputFile (char const * const, class Imath :: Box const &, класс Imath :: Box const &, enum Imf :: RgbaChannels, float, class Imath :: Vec2, float, enum Imf :: LineOrder, enum Imf :: Compression, int) "(?? 0RgbaOutputFile@Imf@@QEAA@QEBDAEBV? $Box@V?$Vec2@H@Imath@@@Imath@@1W4RgbaChannels@1@MV? $Vec2@M@3@MW4LineOrder@1@W4Compression@1@H@Z) PBRT E: \ PBRT \ PBRT \ libpbrt.lib (imageio.obj) 1

Код серьезности Описание Ошибка состояния подавления строки файла проекта LNK2001 неразрешенный внешний символ "publi c: virtual __cdecl Imf :: RgbaOutputFile :: ~ RgbaOutputFile (void) "(?? 1RgbaOutputFile@Imf@@UEAA@XZ) PBRT E: \ PBRT \ PBRT \ libpbrt.lib (imageio.obj) 1

Код серьезности Описание Ошибка состояния подавления строки файла проекта LNK2001 неразрешенный внешний symbol "publi c: void __cdecl Imf :: RgbaOutputFile :: setFrameBuffer (struct Imf :: Rgba const *, беззнаковый __int64, беззнаковый __int64)" (? setFrameBuffer@RgbaOutputFile@Imf@@QEAAXPEBURgba@2@_K1@Z) PBRT E: \ PBRT \ PBRT \ libpbrt.lib ( imageio.obj) 1

Код серьезности Описание Ошибка состояния подавления строки файла проекта LNK2001 неразрешенный внешний символ "publi c: class Imath :: Box const & __cdecl Imf :: RgbaInputFile :: displayWindow (void) const "(? displayWindow@RgbaInputFile@Imf@@QEBAAEBV? $Box@V?$Vec2@H@Imath@@@Imath@@XZ) PBRT E: \ PBRT \ PBRT \ libpbrt.lib (imageio.obj) 1

Код серьезности Описание Ошибка состояния подавления строки файла проекта LNK2001 неразрешенный внешний символ inflate PBRT E: \ PBRT \ PBRT \ Ptex.lib (PtexReader.obj) 1

Код серьезности Описание Ошибка состояния подавления строки файла проекта LNK2001 неразрешенный внешний символ inflateEnd PBRT E: \ PBRT \ PBRT \ Ptex.lib (PtexReader.obj) 1

Код серьезности Описание Ошибка состояния подавления строки файла проекта LNK1120 15 неразрешенных внешних файлов PBRT E: \ PBRT \ x64 \ Release \ PBRT. exe 1

Что не так с pbrt? Думаю, я не сделал ничего плохого, когда cmake, и что я собирался делать сейчас? Большое спасибо за ответ на этот вопрос.

...