Невозможно создать неуправляемый объект, используя новое ключевое слово в управляемом C ++ - PullRequest
1 голос
/ 21 мая 2010

Я создал класс с boost :: unordered_map в качестве члена,

Linkage.h

#ifndef LINKAGE_H
#define LINKAGE_H

#include <boost/unordered_map.hpp>

class Linkage
{
private:
    boost::unordered_map<int, int> m_IOMap;
public:
         ....
};

Linkage.cpp

#include "stdafx.h"

... // methods

и в управляемой части C ++, Я пытаюсь создать указатель объекта:

private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    Linkage* m_pLink = new Linkage();
         .....
}

Однако это приводит к ошибкам:

Error   4   error LNK2005: "private: static unsigned int const boost::detail::type_with_alignment_imp<4>::found" (?found@?$type_with_alignment_imp@$03@detail@boost@@$$Q0IB) already defined in Proj_Test.obj   Linkage.obj
.....
Error   7   fatal error LNK1169: one or more multiply defined symbols found

Может ли кто-нибудь объяснить мне, пожалуйста? Спасибо.

1 Ответ

0 голосов
/ 21 мая 2010

В конце концов это работает, когда я явно создаю его экземпляр внутри конструктора:

#include "stdafx.h"

Linkage::Linkage()
{
    template boost::unordered_map<int, int>;
}
...