DirectX のチュートリアルを行おうとしていましたが、C++ ではなく C でアプリケーションを書きたかったのです。そのため、C でコードを書きましたが、コンパイルしようとすると、「setupD3D」関数で多くのエラーが発生しました。そのため、ファイルの名前を .cpp に変更しました。しかし、新しいコードもコンパイルされませんでした。C と C++ を組み合わせることが問題であるか、相互参照が多すぎると思います。このコードの何が問題なのか誰か教えてもらえますか?
direct3d.h:
#include "main.h"
#ifndef DIRECT3D
#define DIRECT3D
int m_videoCardMemory;
char m_videoCardDescription[128];
ID3D11DeviceContext* m_deviceContext = 0;
D3DXMATRIX m_projectionMatrix;
D3DXMATRIX m_worldMatrix;
D3DXMATRIX m_orthoMatrix;
int setupD3D(BYTE vsync, HWND hwnd, float screenDepth, float screenNear);
void terminateD3D();
void beginScene(float red, float green, float blue, float alpha);
void endScene();
#endif
direct3d.cpp
#include "direct3d.h"
// code
main.h:
#ifndef MAIN_FUNC
#define MAIN_FUNC
#pragma comment(lib, "dxgi.lib")
#pragma comment(lib, "d3d11.lib")
#pragma comment(lib, "d3dx11.lib")
#pragma comment(lib, "d3dx10.lib")
#include <Windows.h>
#include <dxgi.h>
#include <d3dcommon.h>
#include <d3d11.h>
#include <d3dx10math.h>
#include "direct3d.h"
int breedte, hoogte;
LRESULT CALLBACK Actie(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
void main_loop(MSG* msg);
void keyevent();
#endif
main.c
#include "main.h"
// code
winstart.c
#include "main.h"
// code
エラー:
Error 86 error LNK2005: _m_deviceContext already defined in main.obj
Error 87 error LNK2019: unresolved external symbol _setupD3D referenced in function _Actie@16
Error 88 error LNK2019: unresolved external symbol _terminateD3D referenced in function _Actie@16
Error 89 error LNK2019: unresolved external symbol _beginScene referenced in function _render
Error 90 error LNK2019: unresolved external symbol _endScene referenced in function _render
Error 91 error LNK1120: 4 unresolved externals
また、マクロの再定義に関する 84 個の警告があります。