c ++ CLR для соединения dll c ++ с приложением c #

Я пытаюсь следовать этому примеру: http://blogs.artinsoft.net/Mrojas/archive/2008/06/19/Log4NET-for-C++.aspx

получить Log4Net работает в c ++ dll.

Я создал пустой проект CLR, изменил тип вывода на libи добавил следующий код:

//Bridge.cpp

#include <atlstr.h>

using namespace System;

/// <summary>

/// Example of how to simply configure and use log4net

/// </summary>
ref class LoggingExample
{
private:
// Create a logger for use in this class
static log4net::ILog^ log = log4net::LogManager::GetLogger("LoggingExample"); static LoggingExample()
{
log4net::Config::BasicConfigurator::Configure();
}public:static void ReportMessageWarning(char* msg)
{
String^ data = gcnew String(msg);
log->Warn(data);
}
static void ReportMessageError(char* msg)
{
String^ data = gcnew String(msg);
log->Error(data);
}

static void ReportMessageInfo(char* msg)
{
String^ data = gcnew String(msg);
log->Info(data);
}static void ReportMessageDebug(char* msg)
{
String^ data = gcnew String(msg);
log->Debug(data);
}
};

extern "C"{

_declspec(dllexport) void ReportMessageWarning(char* msg)
{
LoggingExample::ReportMessageWarning(msg);
}
_declspec(dllexport) void ReportMessageError(char* msg)
{
LoggingExample::ReportMessageError(msg);
}

_declspec(dllexport) void ReportMessageInfo(char* msg)
{
LoggingExample::ReportMessageInfo(msg);
}

_declspec(dllexport) void ReportMessageDebug(char* msg)
{
LoggingExample::ReportMessageDebug(msg);
}
}

Я создал проект консольного приложения c ++ и добавил этот код:

#include "stdafx.h"#include <iostream>
#include <atlstr.h>extern "C"{

//log4net from the wrapper lib
_declspec(dllimport) void ReportMessageWarning(char* msg);

__declspec(dllexport) void RunTest()
{
std::string message = "hey it seems it is working";
ReportMessageWarning(_strdup(message.c_str()));
}}

Это будет dll c ++, который вызывается из другого приложения C #.
Я скомпилировал библиотеку clr и связал ее с зависимостями приложения c ++.

Тем не менее, dll c ++ не будет компилироваться как есть, давая мне:

Error LNK2001 unresolved external symbol __imp_ReportMessageWarning

Что я здесь пропустил?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]