Мне трудно собрать C / C ++ dll в Visual Studio.Кажется, это связано с библиотекой ЭЛТ.
Простой проект VS c ++ dll.Просто удалил перекомпилированный заголовок и добавил / NOENTRY.Методы экспорта работают, но простой класс (не предназначенный для экспорта) вызывает много ошибок связывания с библиотекой CRT:
Test.h:
class ITest
{
public:
virtual void foo() = 0;
}
class Test final : public ITest
{
public:
Test();
~Test();
void foo();
};
// extern "C" __declspec(dllexport) ITest* __cdecl CreateTest();
Test.cpp
#include "Test.h"
Test::Test() {}
Test::~Test() {}
Test::foo() {}
// extern "C" __declspec(dllexport) ITest* __cdecl CreateTest() { return new Test; }
ошибки:
Test.obj : error LNK2001: unresolved external symbol _purecall
msvcrt.lib(delete_scalar.obj) : error LNK2019: unresolved external symbol free referenced in function "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
Раскомментирование экспорта вызывает больше ошибок ссылки msvcrt.lib и изменение библиотеки времени выполнения для MDd, MT, MTd изменяет только библиотеку, на которую ссылаются.
Спасибо за любую помощь:)