Я хочу создать приложение DirectX, которое использует C# формы для обработки окон, потому что это то, с чем я больше всего знаком. Я сделал проект C ++ Dll и добавил эти зависимости, чтобы получить DirectX под Linker -> Input -> Additional Dependencies.
d3d11.lib
dxgi.lib
dxguid.lib
uuid.lib
kernel32.lib
user32.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
И я установил Подсистему в Системе на Windows. И установите выходную папку в папку bin проекта C# Forms, чтобы мне не нужно было копировать вставку каждый раз, когда я собираю проект C ++. Затем я добавляю два файла, заголовок A и файл cpp.
TestExport.h
#pragma once
#include "pch.h"
#include <d3dcompiler.h>
#include <d3d11_1.h>
#include <directxcolors.h>
#include <wrl/client.h>
using namespace DirectX;
extern "C"
{
__declspec(dllexport) void __cdecl Test();
}
TestExport. cpp
#include "pch.h"
#include "TestExport.h"
void Test()
{
ID3DBlob *pBlob;
D3D10CreateBlob(12, &pBlob);
delete pBlob;
}
Я знаю, что функция в TestExport. cpp в настоящее время ничего не делает, но она будет заменена некоторым реальным методом, когда проблема будет решена. Проблема в том, что я получаю ошибку LNK2001 unresolved external symbol _D3D10CreateBlob@8
, как только я вызываю метод D3D10CreateBlob
. У меня не так много знаний о Dll, и я понятия не имею, что искать, чтобы найти победителя или лидера