https://qiita.com/Luke02561/items/43bed4008dd707617a94
上記問題と同じであろう問題に衝突しました
正確に同じ問題か確認したいので、
画像の画面を自環境で見たいのですが、確認するにはどうすればよろしいのでしょうか?
(当方この画面がなんの画面なのかも理解していないのでその点もご教授いただけたら幸いです)
#pragma once #include <windows.h> #include "DXApplication.h" //class DXApplication; class WinApplication { public: static void Run(DXApplication* dxApp, HINSTANCE hInstance); private: static LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); };
#pragma once #include <string> #include <wchar.h> #include <windows.h> #include <d3d12.h> #include <dxgi1_6.h> #include <D3Dcompiler.h> #include <DirectXMath.h> #include <wrl.h> #include "DirectX-Headers-main/include/directx/d3dx12.h" #include <stdexcept> #include <vector> #pragma comment(lib, "d3d12.lib") #pragma comment(lib, "dxgi.lib") #pragma comment(lib,"d3dcompiler.lib") using Microsoft::WRL::ComPtr; class DXApplication { public: DXApplication(unsigned int width, unsigned int height, std::wstring title); void OnInit(HWND hwnd); void OnUpdate(); void OnRender(); void OnDestroy(); const WCHAR* GetTitle() const { return title_.c_str(); } LONG GetWindowWidth() const { return windowWidth_; } LONG GetWindowHeight() const { return windowHeight_; } private: static const unsigned int kFrameCount = 2; std::wstring title_; LONG windowWidth_; LONG windowHeight_; // パイプラインオブジェクト ComPtr<ID3D12Device> device_; ComPtr<ID3D12CommandAllocator> commandAllocator_; ComPtr<ID3D12GraphicsCommandList> commandList_; ComPtr<ID3D12CommandQueue> commandQueue_; ComPtr<IDXGISwapChain4> swapchain_; ComPtr<ID3D12DescriptorHeap> rtvHeaps_; // レンダーターゲットヒープ ComPtr<ID3D12Resource> renderTargets_[kFrameCount]; // バックバッファー // フェンス ComPtr<ID3D12Fence> fence_; UINT64 fenceValue_; HANDLE fenceEvent_; void LoadPipeline(HWND hwnd); void CreateD3D12Device(IDXGIFactory6* dxgiFactory, ID3D12Device** d3d12device); void ThrowIfFailed(HRESULT hr); };
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE, _In_ LPSTR, _In_ int nCmdShow) //int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { DXApplication dxApp(1280, 720, L"DX Sample"); WinApplication::Run(&dxApp, hInstance); return 0; }
質問者さんの環境の情報が必要です。どんなOSでどんなコンパイラでどうやってコンパイルしているのか。
Os : Windows11
IDE visualstudio
コンパイラ : MSVC (Visualstudioなので)
コンパイル方法 : VSなのでF5クリック
です。
示されている画像は何らかのリンカが出してきたエラーメッセージかと思いますが,
とりあえず Visual Studio であれば,リンク時にその話と同じ問題が生じた場合には
LNK1169 1つ以上の複数回定義されているシンボルが見つかりました
みたいなエラーメッセージが表示されると思います.
加えて LNK2005 で「int F(int) は既に ***.obj で定義されています」とか言われることになるかと.
https://learn.microsoft.com/ja-jp/cpp/error-messages/tool-errors/linker-tools-error-lnk2005?view=msvc-170
(Visual Studio で実際にエラーが出ているのなら,エラー一覧の "LNK2005" みたいな表示箇所がリンクになっていて,クリックすれば↑みたいなページに飛べる)
> コンパイル方法 : VSなのでF5クリック
F5を押したあとにターミナルに何かメッセージが出てると思います。それも開示してください。
あと、なぜ「上記問題と同じであろう」と思ったのかも書いてもらえると問題の理解がしやすいです。
> ld: 1 duplicate symbol for architecture x86_64
このエラー出力内容ですと、clang, clang++ を使われている様子ですね。(<AI/Copilotさんの回答による)
質問者さんが引用されたQiitaの記事のタグにも"clang"がありました。
buildする過程でなぜかエラーが出なくなったので正確な内容は割愛しますが
LINK2019外部シンボルのエラーでした。
Main.cppからWinApplication::Run(&dxApp, hInstance) を呼び出しに関して外部シンボルのエラーが出ておりました。
clang++ という情報いただいたのと
現状再buildでエラーが発生しないためこんぱいらからエラーログを得られないのでいったん解決済みにいたします

回答2件
あなたの回答
tips
プレビュー