2012-02-25 2 views
2

Я вижу на вопрос, что ссылку на статическую библиотеку C++/CLI невозможно связать, поэтому я создал динамический и попытаюсь связать ее в консоли CLR C++ проект без успеха Я получаю: Ошибка 1 ошибка LNK2020: неразрешенный токен (06000001) cBox ::. ctor pTest9.obj
Я положил dll (Project -> reference-> add new reference), чтобы установить включенные файлы в проект (включая файл без кода)Связать библиотеку C++/CLI в проекте консоли CLR

Я не знаю, что делать (я новичок с ++/CLI C)

спасибо за любые предложения/решения

Библиотека проект объявлен как DLL

#include "stdafx.h" 

using namespace System; 

ref class cBox 
{ 
public: 
cBox() ; 
cBox(double lv,double bv,double hv); 

double Volume(); 

private: 
double Length; 
double Width; 
double Height; 
}; 

КОД БИБЛИОТЕКА:

#include "stdafx.h" 
#include "cBox.h" 


cBox::cBox() 
{ 
Console::WriteLine(L"No arg constructor called"); 

Length = 1.0 ; 
Width  = 1.0 ; 
Height = 1.0 ; 

} 

cBox::cBox(double lv,double bv,double hv) 
{ 
Console::WriteLine(L"Constructor called"); 

Length = lv; 
Width  = bv; 
Height = hv; 

} 
double cBox::Volume() 
{ 
    return Length*Width*Height; 
} 

Затем в проекте консоли CLR Я пытаюсь связать эту библиотеку, я получаю свой файл .h

#include "stdafx.h" 
#include "cBox.h" 

using namespace System; 


int main(array<System::String ^> ^args) 
{ 

Console::WriteLine(L"Test Library:\n"); 

cBox^ oBox; // handle of type box 

oBox = gcnew cBox; 

Console::WriteLine(L"Default Box Volume {0}",oBox->Volume()); 

    return 0; 
} 
+0

Нам нужно увидеть код, если мы сможем вам помочь – Dervall

+0

Итак, вы хотите скомпилировать некоторый код в управляемую сборку с использованием C++. И тогда вы хотите использовать .lib из этой сборки? –

+0

На самом деле это должно быть возможно. Не могли бы вы предоставить дополнительную информацию и примеры вашего кода и макета проекта. – MajesticRa

ответ

3

Вам нужно сделать пару изменений, чтобы заставить это работать. Во-первых, вам нужно сделать класс public поэтому приложение может использовать его:

public ref class cBox 
{ 
    ... 

И вам нужно удалить #include "cBox.h" из проекта консольного приложения; включение подразумевается при использовании управляемых библиотек.

+0

Большое вам спасибо works well.pascal – pasparis

+0

@pasparis Если вы нашли ответ полезным, вы должны его перенести, нажав стрелку вверх над номером слева от сообщения. Вы также можете принять один ответ, если он решил вашу проблему, щелкнув отметку ниже. Это хороший этикет, чтобы принимать ответы на ваши вопросы, иначе люди с меньшей вероятностью помогут вам. – spencercw

+0

спасибо за объяснение, мне кажется, что мне нужно 15 репутаций, чтобы разрешить нажимать на стрелку вверх, и я нажимаю на контрольный знак, затем он пропускает зеленый цвет, было ли это правильно? еще раз спасибо, pascal – pasparis

Смежные вопросы