[英]Linker Errors using directX and Visual Studio 2010
因此,我已經為此工作了兩個小時的大部分時間,盡管我似乎遵循互聯網上每個論壇/指南的確切說明,但在嘗試將 directX 與 Visual Studio 2010 一起使用時,我仍然遇到 linker 錯誤。
這是我開始的代碼:
#include <D3DX10.h>
#include <iostream>
using namespace std;
ostream& operator<<(ostream& os, D3DXVECTOR3& v){
os << "(" << v.x << ", " << v.y << ", " << v.z << ")\n";
return os;
}
int main (){
return 0;
}
我下載並安裝了 SDK,並在項目配置屬性中手動設置了適當的包含和庫目錄。 我還設置了額外的 linker 輸入依賴項:
d3dx10.lib
d3dx10d.lib
但是,我在編譯時仍然收到以下錯誤:
1>MSVCRTD.lib(crtexew.obj): 錯誤 LNK2019:在 function _ _tmainCRTStartup 中引用的未解析外部符號 WinMain@16
1>C:\Users\Ben\Documents\Visual Studio 2010\Projects\DX Practice\Debug\DX Practice.exe: 致命錯誤 LNK1120: 1 unresolved externals
任何和所有的幫助表示贊賞。
編輯:將 int main() 更改為 int WinMain()。 新錯誤:
1>c:\users\ben\documents\visual studio 2010\projects\dx practice\dx practice\main.cpp(10): 警告 C4007: 'WinMain': must be '__stdcall'
1>c:\users\ben\documents\visual studio 2010\projects\dx practice\dx practice\main.cpp(10): error C2731: 'WinMain': function 不能重載
1> c:\users\ben\documents\visual studio 2010\projects\dx practice\dx practice\main.cpp(10):參見“WinMain”聲明
EDIT2:想通了-
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
謝謝大家的幫助:)
除非您在 Visual Studio 中使用特殊設置,否則窗口可執行文件以WinMain
function 開頭,而不是常規的main
function。 因此,您應該創建一個控制台應用程序,使用WinMain
,或者使用設置來使用常規main
function。
請注意,實際創建 windows 不需要從WinMain
開始。 這只是一個 Visual Studio 約定。
使用常規main
的選項位於 Project Settings 對話框中的“Linker->Advanced”下。 它被稱為“入口點”,要使用常規主程序,您可以使用“mainCRTStartup”作為值。
如果您堅持使用WinMain
,那么您需要正確定義它:
int WINAPI WinMain( HINSTANCE hInstance, // Instance
HINSTANCE hPrevInstance, // Previous Instance
LPSTR lpCmdLine, // Command Line Parameters
int nCmdShow) // Window Show State
如果您包含 Windows 標頭,則 linker 希望您提供WinMain
function,而不是常規main
。 WinMain 入口點提供特定於 Windows 的數據,例如HINSTANCE
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.