C++ DLL中WINAPI函数的链接器错误LNK2001,存在头和库,我缺少什么?

C++ DLL中WINAPI函数的链接器错误LNK2001,存在头和库,我缺少什么?,c++,C++,我有一个简单的DLL,我正试图在VS2010 Express中编译。 DLL的代码如下所示: #pragma comment(linker, "/EXPORT:PlusOne=_PlusOne@4") #include <windows.h> #include <commctrl.h> extern "C" __declspec(dllexport) int PlusOne(int inNum) { inNum++; return inNum; };

我有一个简单的DLL,我正试图在VS2010 Express中编译。 DLL的代码如下所示:

#pragma comment(linker, "/EXPORT:PlusOne=_PlusOne@4")

#include <windows.h>
#include <commctrl.h>

extern "C"  __declspec(dllexport) int PlusOne(int inNum)
{
    inNum++;
    return inNum;
};

extern "C"  __declspec(dllexport) LRESULT CALLBACK OwnerDrawButtonProc(HWND hWnd, UINT uMsg, WPARAM wParam,
                               LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{
//further processing will go here
   return DefSubclassProc(hWnd, uMsg, wParam, lParam);
};
看起来它找不到函数,但是库和头都存在,所以我不明白为什么

除此之外,代码的动机是我在vba中对窗口进行子类化,但在vba中使用windowprocedure非常不稳定,因此我想尝试将其移动到dll中


请帮助我了解这里出了什么问题。

您是否尝试过针对
Comctl32.lib
的链接

表示函数所在的库

转到项目设置->链接器->输入->其他依赖项并在那里添加
Comctl132.lib

“Comctl32.lib”(而不是“commdlg32.lib”)是此函数“存在”的地方


参见MSDN:

谢谢,我想我的大脑只处理名字的前三个和后两个字符。通常情况下,开头总是很难
1>  Searching libraries
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\winmm.lib:
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib:
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\user32.lib:
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib:
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\winspool.lib:
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comdlg32.lib:
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\advapi32.lib:
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shell32.lib:
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ole32.lib:
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\oleaut32.lib:
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\uuid.lib:
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\odbc32.lib:
1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\odbccp32.lib:
1>      Searching c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\MSVCRT.lib:
1>      Searching c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\OLDNAMES.lib:
1>  
1>  Finished searching libraries
1>dlltest.obj : error LNK2001: unresolved external symbol _DefSubclassProc@16
1>s:\documents\my documents\visual studio 2010\Projects\dlltest\Release\dlltest.dll : fatal error     LNK1120: 1 unresolved externals