cpp генерирует .lib и использует его в другом проекте - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть один проект: mialsrtkOrientImage с одним .h и одним .cpp и множеством зависимостей, «управляемых» с помощью cmake.Я хочу создать из него .lib (он скомпилирует и создаст .lib)

, и теперь я хочу использовать .lib в другом проекте OrientImageWrapper, чтобы класс был определен в проекте mialsrtkOrientImage

У меня есть это: mialsrtkOrientImage.h:

#ifndef mialsrtkOrientImage_H
#define mialsrtkOrientImage_H

class MialOrientImage {

  public:

      //! default constructor
      MialOrientImage();

      //! default destructor
      ~MialOrientImage();

      std::string inputFile;
      std::string outputFile;
      std::string orientation;
      void reOrient(std::string inputFile, std::string outputFile, std::string orientation);

  private:
      int coucou;

};
#endif

и в OrientImageWrapper:

#ifndef mialsrtkOrientImageWrapper_H
#define mialsrtkOrientImageWrapper_H

#include <string>

# define reOrientWrapper_EXPORT  __declspec(dllexport)

class MialOrientImage;

class reOrientWrapper_EXPORT reOrientWrapper {

public:

    //! default constructor
    reOrientWrapper();

    //! default destructor
    ~reOrientWrapper();

    std::string inputFile;
    std::string outputFile;
    std::string orientation;
    void reOrient(std::string inputFile, std::string outputFile, std::string orientation);
    int test = 1;

private:
    MialOrientImage* wrap_MialOrientImage;

};

в OrientImageWrapper.cpp У меня есть:

#include "mialsrtkOrientImageWrapper.h"
#include <string>
#include <iostream>

void reOrientWrapper::reOrient(std::string inputFile, std::string outputFile, std::string orientation)
{
    std::cout << inputFile << outputFile << orientation << std::endl;
    wrap_MialOrientImage.reOrient(inputFile, outputFile, orientation);

}

reOrientWrapper::reOrientWrapper()
{
    std::cout << "construit" << std::endl;
}

reOrientWrapper::~reOrientWrapper()
{
    std::cout << "detruit" << std::endl;
}

int main()
{
    reOrientWrapper test;
    std::cout << test.test << std::endl;
    test.reOrient("plif", "plaf", "plouf");
    return 0;
}

В Visual Studio я поставил папку с .lib в свойствах конфигурации -> Каталоги VC ++ -> Директории библиотеки

. Мой .lib можно посмотреть здесь: enter image description here

но когда я хочу скомпилировать OrientImageWrapper, у меня появляется эта ошибка:

слева от .reOrient должен иметь class / struc / union, код ошибки C2228

, поэтому кажетсячто возникла проблема при создании класса MialOrientImage из .lib

Как я мог решить эту проблему?

...