Visual Studio 2012 — C ++ Wrapper для TFS API

У меня есть 2 проекта в VS 2012, пытающихся создать оболочку C ++ для Team Foundation Server API.

#pragma once
using namespace System;
using namespace System::Reflection;
using namespace System::Collections::ObjectModel;
using namespace Microsoft::TeamFoundation::Client;
using namespace Microsoft::TeamFoundation::Framework::Common;
using namespace Microsoft::TeamFoundation::Framework::Client;

namespace ManagedDll {
public ref class  TFSAUth
{
public:
TFSAUth();
~ TFSAUth();
void AuthUser()
{
System::String ^x = gcnew String( "http://myhost:8080/tfs");
System::String ^u = gcnew String( "user");
System::String ^p = gcnew String( "Pass");
System::Net::NetworkCredential ^c = gcnew System::Net::NetworkCredential(u, p);
TeamFoundationServer ^something = gcnew TeamFoundationServer(x, c);
something->Authenticate();
System::String ^col = gcnew String (something->TfsTeamProjectCollection->Name);
Console::WriteLine(col);
}
private:
};

TFSAUth:: TFSAUth()
{
}

TFSAUth::~ TFSAUth()
{
}
}

__declspec(dllexport) void Auth()
{
ManagedDll::TFSAUth work;
work.AuthUser();
}

Это проект библиотеки, и у меня есть тестовое приложение, использующее эту библиотеку.

#include "stdafx.h"#include "conio.h"#include <iostream>
#include <windows.h>
#include "ManagedDll.h"
_declspec(dllexport) void Auth();

int _tmain()
{
Auth();

system("pause");
return 0;
}

Все некоторое время работал, открыл этот проект, чтобы посмотреть, смогу ли я получить что-то еще. Сегодня он не компилируется, что дает мне ошибки компоновщика.

TestApp.obj: ошибка LNK2019: неразрешенный внешний символ «void __cdecl
Auth (void) «(? Auth @@ YAXXZ), на который ссылается функция _wmain

Я не уверен, почему, поскольку ничего не изменилось. Но более того, мне интересно, правильно ли я поступаю при создании оболочки C ++ для TFS API.

Любая помощь / примеры / предложения высоко ценится, так как это моя первая попытка обертки.

1

Решение

В вашем родном проекте C ++ (Test Application) вы должны включить файл lib управляемого проекта C ++ (ManagedDll).

Экспортированная функция DLL в управляющей DLL C ++ обрабатывается так же, как и в собственных C ++ DLL, вы можете выполнить следующее: Lib-файлы как входные данные компоновщика чтобы это работало.

Кроме того, вы должны удалить

_declspec(dllexport) void Auth();

в тестовом приложении.

0

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


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