У меня есть DLL с включенной опцией / clr. У меня есть следующее объявление в моей DLL:
int __declspec(dllexport) __cdecl test();
Также у меня есть консоль с параметром / clr ON. И иметь следующее объявление в моем файле main.cpp:
int __declspec(dllimport) __cdecl test();
Я добавил Ссылку на проект DLL в настройках свойств моего консольного приложения. Но я все еще получаю нерешенные внешние ссылки от тестовой функции.
Мне удалось скомпилировать, вручную добавив ссылку на файл lib, сгенерированный компилятором. Но тогда я не могу попасть в точки останова внутри функций DLL (он говорит, что исходный код отличается от оригинальной версии или символы не были загружены …)
Кто-нибудь может мне помочь?
Если ваша DLL не использует управляемые функции, просто удалите /clr
вариант из этого проекта и перекомпилировать. Если вы все еще получаете ошибки, это, вероятно, связано со ссылками в консольном приложении.
Если в DLL используется управляемая функциональность, вам нужно сделать следующее:
DLL:
#include "stdafx.h"
namespace Test1
{
public ref class Test2
{
public:
static int test()
{
return 1;
}
};
}
Консольное приложение:
#include <iostream>
int main(int argc, char* argv[])
{
int i = Test1::Test2::test();
std::cout << i << std::endl;
return 0;
}
Других решений пока нет …