我在这个主题上看到了很多问题和答案,但没有一个涉及到我的问题。我的函数在.h文件中正确声明,并在他们的.cpp文件采取的正确的参数定义,但我仍然得到这个错误:当函数被正确定义时,我仍然如何获得LNK2019?
error LNK2019: unresolved external symbol "public: void __cdecl ox::Window::Init(__int64 (__cdecl*)(struct HWND__ *,unsigned int,unsigned __int64,__int64),class ox::OxLog *)" ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) referenced in function "private: void __cdecl App::Init(void)" ([email protected]@@AEAAXXZ)
在window.h
namespace ox {
FOO_API class Window
{
public:
// Some declarations
#if defined BAR_WIN32
void Init(WNDPROC windowProc, OxLog* log);
#endif
};
}
WindowWin32.cpp
namespace ox {
void Window::Init(WNDPROC windowProc, OxLog* log)
{
// some code
}
}
App.h
class App
{
public:
// Some declarations
private:
ox::Window pWindow;
private:
void Init();
};
App.cpp
void App::Init()
{
// Create Window
pWindow = new ox::Window();
pWindow->Init(WinProc, gLog);
}
在'WindowsWin32.cpp'中,你应该声明你的函数为'ox :: Window :: Init(' – CoryKramer
@CoryKramer这不是一个问题,因为它已经被命名空间包围了 – SpicyWeenie
有一些非常可疑WNDPROC函数指针,它在链接器错误信息中显示为'__cdecl',它不可能是正确的,它是'__stdcall'。除了以非常糟糕的方式崩溃你的程序之外,如果定义正确,这种不匹配肯定会产生LNK2019我们不能看到它来自哪里 –