dll作为非托管代码编译良好,但当我在项目属性中添加/clr并更改为在共享dll中使用MFC时,mfCFtpConnection::GetCurrentDirectory会给我LNK2028和LNK2019错误。这是未解决的令牌和未解决的永恒符号错误。
我有#include并链接了wininet.lib。所以我很困惑。
我在网上读到一篇帖子,用户遇到了这个问题,它与mfc100.lib将CFtpConnection::GetCurrentDirectory重命名为CFtpConnection::GetCurrentDirectoryA有关。没有任何解决方案,微软的一位代表表示,它将在mfc100.lib的未来版本中得到修复。我不知道这是否是问题所在。
这是帖子的链接。链接到在线Post
任何想法都让我抓狂。
我还尝试了CFtpConnection::GetCurrentDirectoryAsURL,代码编译得很好。
我认为这个错误源于这样一个事实,即有一些#define
用于绕过MFC dll的CLR限制。如果您使用的是VS2010,您可以将鼠标悬停在方法名称上,您将在生成的.obj
文件中看到正在重命名方法的#define
语句。由于它已被重命名,代码中的其他模块将无法链接到它。