pcl_visualizer.h - erro fatal LNK1120: 1 externos não resolvidos

error LNK2001: unresolved external symbol "public: virtual void __cdecl pcl::visualization::PCLVisualizer::FPSCallback::Execute(class vtkObject *,unsigned long,void *)" (?Execute@FPSCallback@PCLVisualizer@visualization@pcl@@UEAAXPEAVvtkObject@@KPEAX@Z)
1>C:\Users\hatea\Documents\Visual Studio 2015\Projects\PCLTester\x64\Debug\PCLTester.dll : fatal error LNK1120: 1 unresolved externals

Esgotei completamente todas as avenidas que lidam com esse problema. Eu verifiquei aqui e encontrei uma série de perguntas / respostas semelhante:erro LNK2001 ao incluir "pcl_visualizer.h"

O problema é que não quero comentar o método FPSCallback. Preciso dele para o visualizador VTK que estou usando. Eu determinei que só recebo o erro externo não resolvido quando faço referência ao arquivo .h em uma biblioteca C ++ / CLI gerenciada.

#pragma once
#pragma unmanaged
#include <pcl/visualization/pcl_visualizer.h>
#pragma managed

using namespace System;

namespace PCLTesterCLI 
{
    public ref class PCLTesterCLI
    {
    public:
        PCLTesterCLI();
        virtual ~PCLTesterCLI();
    };
}

Se eu fizer o mesmo em uma biblioteca Win32 não gerenciada, a biblioteca será criada com êxito.

#pragma once
#include <pcl/visualization/pcl_visualizer.h>

class PCLTester
{
public:
    PCLTester();
    virtual ~PCLTester();
};

Aqui está o segmento de pcl_visualizer.h:

    struct FPSCallback : public vtkCommand
    {
      static FPSCallback *New () { return (new FPSCallback); }

      FPSCallback () : actor (), pcl_visualizer (), decimated () {}
      FPSCallback (const FPSCallback& src) : vtkCommand (), actor (src.actor), pcl_visualizer (src.pcl_visualizer), decimated (src.decimated) {}
      FPSCallback& operator = (const FPSCallback& src) { actor = src.actor; pcl_visualizer = src.pcl_visualizer; decimated = src.decimated; return (*this); }

      virtual void 
      Execute (vtkObject*, unsigned long event_id, void*);

      vtkTextActor *actor;
      PCLVisualizer* pcl_visualizer;
      bool decimated;
    };

    /** \brief The FPSCallback object for the current visualizer. */
    vtkSmartPointer<FPSCallback> update_fps_;

Aqui está o segmento de pcl_visualizer.cpp:

void
pcl::visualization::PCLVisualizer::FPSCallback::Execute (
    vtkObject* caller, unsigned long, void*)
{
    vtkRenderer *ren = reinterpret_cast<vtkRenderer *> (caller);
    float fps = 1.0f / static_cast<float> (ren->GetLastRenderTimeInSeconds ());
    char buf[128];
    sprintf (buf, "%.1f FPS", fps);
    actor->SetInput (buf);
}

Alguma idéia de por que a estrutura e a função de membro entram em conflito em um ambiente gerenciado?

A razão pela qual minha pergunta é única é que o erro de meus símbolos não foi resultado de nada que eu fiz: por exemplo declarar uma função sem defini-la, ter um erro de sintaxe que resulta na função não ser definida corretamente ou deixar de fora uma dependência .lib do Linker-> Input. No meu caso, tenho todos os arquivos .lib corretos vinculados e a função pcl :: visualization parece bem definida. Por alguma estranha razão, ainda está sendo perdida em tempo de compilação na biblioteca gerenciada. Copiei minhas dependências do meu .vcxproj gerenciado para o meu .vcxproj não gerenciado para verificar se não era um problema de dependência. Ambas as classes são configuradas com os requisitos mínimos de classe para evitar conflitos nesse sentido. Ambos os projetos têm o mesmo arquivo .h e arquivos .lib vinculados.

questionAnswers(1)

yourAnswerToTheQuestion