LNK2019错误一个DLL与MFC DLL链接

时间:2013-08-18 16:16:39

标签: c++ dll mfc linker

我是MFC的新手。

我正在尝试在MFC中创建一个DLL,它链接到另一个DLL。

问题是当我尝试编译时,我得到一个LNK2019错误,因为我正在尝试链接的DLL中存在一个函数。

LNK2019是指未找到DLL或DLL内部的函数。

我已经采取了所有步骤,DLL被放置在一个已知的位置,lib也被放置在一个已知位置,它已被添加到其他依赖项中,所有正确的开关都已应用(我知道的任何方式)

我已经使用了Dependency walker,我知道我试图链接的DLL暴露了这个函数。 我还有其他使用该函数的例子,我正在尝试使用它。 .lib和.dll是一致的,即它们彼此一致。

但仍然存在错误。

修改 的 这是错误消息:

  

错误2错误LNK2019:未解析的外部符号   “__declspec(dllimport)public:bool __thiscall   PwServer :: Connect(wchar_t const *,unsigned long,unsigned long *)“   (_ imp ?Connect @ PwServer @@ QAE_NPB_WKPAK @ Z)在函数中引用   “public:bool __thiscall CPwServer :: Connect(class   ATL :: CStringT> &gt ;, unsigned long,unsigned long *)“   (?连接@ CPwServer @@ QAE_NV?$ CStringT @ _WV?$ StrTraitMFC_DLL @ _WV?$ ChTraitsCRT @ _W @ ATL @@@@@ ATL @@ KPAK @ Z)

这是我用来访问DLL的调用。

bool conn = PwSrv->Connect(_T(""));

Dumpbin函数导出:

25BE6 ?Connect@PwServer@@QAE_NPBGKPAK@Z 25BE6 __imp_?Connect@PwServer@@QAE_NPBGKPAK@Z

在将MFC DLL与常规DLL连接时,还有其他需要用餐的地方,比如添加AFX_EXT_或其他东西吗?

请在此提出建议。 谢谢。

更新

似乎所需要的只是切换项目属性>> C / C ++>>语言>>将wchar_t作为内置类型设置为NO时设置的标志。我以前从未打过过国旗,所以不知道。 Linker错误就在那里......

行。现在我还有另一个问题。 wchar_t的切换解决了DLL与另一个MFC DLL链接的问题,但现在我的应用程序找不到我的DLL中的入口点。在依赖walker中,它显示了应用程序发送的CString与我的DLL正在接受的Unsigned Short ...之间的不匹配(由于wchar_t关闭,大概是)

1 个答案:

答案 0 :(得分:0)

假设您正确包含了DLL的.lib文件(大多数情况下这归结于编译器设置的差异。例如UNICODE设置)。

  1. 通过将“显示进度”链接器设置设置为VERBOSE来检查.lib是否实际正在加载。
  2. 在LIB文件上运行DUMPBIN以检查导出的函数是否与链接器尝试导入的函数相同。
  3. dumpbin /ALL mylib.lib > exports.txt
    

    如果名称装饰稍有不同,那么就会给你一个关于问题的线索。