DirectX编程的关于静态库的error LNK 2019有关问题,研究了一天了,已崩溃

DirectX编程的关于静态库的error LNK 2019问题,研究了一天了,已崩溃
首先声明:
1、刚刚接触建立和调用静态库,用Windows Console Application测试,没问题;
2、DirectX是2010 June版本,用的是DirectX 9;
3、各种文件放在一个工程目录下的话,没有任何问题。

好了,现在正式开始。

下面是Experiment工程的文件winmain.cpp的内容。这个工程是用来调用我即将在2楼给出的Library.lib库文件的。代码如下:

#include <windows.h>

#include "F:\\Allen Sherrod\\Chap1\\Library\\Library\\Lib.h"
//#include "Lib.h"
#pragma comment(lib, "F:\\Allen Sherrod\\Chap1\\Library\\Debug\\Library.lib")
//#pragma comment(lib, "Library.lib")
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE prevhInst,
LPSTR cmdLine, int show)
{
// Register the window class
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc,
0, 0, GetModuleHandle(NULL), NULL, NULL,
NULL, NULL, WINDOW_CLASS, NULL };
RegisterClassEx(&wc);

// Create the application's window
HWND hWnd = CreateWindow(WINDOW_CLASS, WINDOW_NAME,
WS_OVERLAPPEDWINDOW, 100, 100,
640, 480, GetDesktopWindow(), NULL,
wc.hInstance, NULL);

// Initialize Direct3D
if (InitializeD3D(hWnd, false))
{
// Show the window
ShowWindow(hWnd, SW_SHOWDEFAULT);
UpdateWindow(hWnd);

// Enter the message loop
MSG msg;
ZeroMemory(&msg, sizeof(msg));

while (msg.message != WM_QUIT)
{
if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
RenderScene();
}
}

// Release any and all resources.
Shutdown();

// Unregister our window.
UnregisterClass(WINDOW_CLASS, wc.hInstance);
return 0;
}


可是结果编译没问题,但是debug的时候出现两个错误,第一个错误是
“error LNK 2019: unresolved external symbol _Direct3DCreate9...”(以下省去若干字)
第二个错误是
error LNK 1120: 1 unresolved externals

网上找了半天了,不过好像没有问这种跟DirectX相关的问题的。郁闷死了。
------解决方案--------------------
重建所有。



const wchar_t *XXX=L"...";
改为
wchar_t XXX[]=L"...";

再试试?


------解决方案--------------------
你确定在同一个工程目录下运行的话是没有问题的吗?仔细检查你的各项设定,包括包含的DirectX的头文件和库文件的目录等。
------解决方案--------------------
引用:
对了,之前在项目属性里包含的DirectX的lib文件的库文件夹是x64的,刚才我改成了x86,然后突然可以运行了!但是运行时发现字符显示有问题,就是英文显示成了乱码。于是我将Lib.h中开始的那个字符串类型改成了 const wchar_t*(字符串前面还加了一个L),然后把两个项目属性的字符集改成了Unicode。本以为这下子没问题了,但是运行的时候却又出现了新问题:
DirectX编程的关于静态库的error LNK 2019有关问题,研究了一天了,已崩溃

这到底是怎么回事呢?


至于这个问题,可能是头文件中的const的问题吧,你在这方面下个功夫。