DLL 本地定义符号*****在函数****中导入

wulin198550 2009-03-20 04:59:28
warning LNK4217: 本地定义的符号 ?Write@CLogFile@@QAE_NV?$CStringT@_WV?$StrTraitATL@_WV?$ChTraitsCRT@_W@ATL@@@ATL@@@ATL@@@Z (public: bool __thiscall CLogFile::Write(class ATL::CStringT<wchar_t,class ATL::StrTraitATL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >)) 在函数 "public: bool __thiscall CLogEvent::WriteLog(class ATL::CStringT<wchar_t,class ATL::StrTraitATL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >,class ATL::CStringT<wchar_t,class ATL::StrTraitATL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >)" (?WriteLog@CLogEvent@@QAE_NV?$CStringT@_WV?$StrTraitATL@_WV?$ChTraitsCRT@_W@ATL@@@ATL@@@ATL@@0@Z) 中导入 LogEvent.obj ELogEvent
...全文
1186 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiarenjiesui 2012-09-12
  • 打赏
  • 举报
回复
选择项目->属性->预处理器->预处理定义, 增加:HYCOMMONWINAPI_EXPORTS
cnzdgs 2009-03-21
  • 打赏
  • 举报
回复
你还是把代码上传吧。
jlj84237485 2009-03-21
  • 打赏
  • 举报
回复
帮顶一下
wulin198550 2009-03-21
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cnzdgs 的回复:]
另外,我看上面的提示说的是CLogFile类,这个类你是怎么处理的?
[/Quote]
和CLogEvent 一样的处理,CLogEvent 也有同样的问题!没有贴出
cnzdgs 2009-03-20
  • 打赏
  • 举报
回复
另外,我看上面的提示说的是CLogFile类,这个类你是怎么处理的?
wulin198550 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 cnzdgs 的回复:]
我说的其它地方是指DLL项目中的其它cpp文件,定义_DLL_ELOGEVENT的目的,是确保在DLL项目中所有使用这个类的cpp文件中都使用class __declspec(dllexport) CLogEvent这个定义。
[/Quote]
这个是必然的,我已经这样做了!希望能得到真正的答案,大家可以互相讨论下!期待答案!
cnzdgs 2009-03-20
  • 打赏
  • 举报
回复
我说的其它地方是指DLL项目中的其它cpp文件,定义_DLL_ELOGEVENT的目的,是确保在DLL项目中所有使用这个类的cpp文件中都使用class __declspec(dllexport) CLogEvent这个定义。
wulin198550 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cnzdgs 的回复:]
引用 5 楼 wulin198550 的回复:
我的头文件这样定义的
#ifdef _DLL_ELOGEVENT
class __declspec(dllexport) CLogEvent
#else
class __declspec(dllimport) CLogEvent
#endif

实现文件这样:
#ifndef _DLL_ELOGEVENT
#define _DLL_ELOGEVENT
#endif
#include "头文件"

其它使用CLogEvent的cpp文件也都需要先定义_DLL_ELOGEVENT,再包含头文件。
[/Quote]
我这个是导出类,如果其他的地方也用了_DLL_ELOGEVENT,那这个宏定义有意义吗?
cnzdgs 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wulin198550 的回复:]
我的头文件这样定义的
#ifdef _DLL_ELOGEVENT
class __declspec(dllexport) CLogEvent
#else
class __declspec(dllimport) CLogEvent
#endif

实现文件这样:
#ifndef _DLL_ELOGEVENT
#define _DLL_ELOGEVENT
#endif
#include "头文件"
[/Quote]
其它使用CLogEvent的cpp文件也都需要先定义_DLL_ELOGEVENT,再包含头文件。
wulin198550 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 oyljerry 的回复:]
引用 7 楼 wulin198550 的回复:
引用 3 楼 na_he 的回复:
右击dll工程 -- 属性,打开属性页,展开:配置属性 -- C++ --预处理器,在预处理器定义的最后面填入:_AFXEXT
文章出处:DIY部落(http://www.diybl.com/course/3_program/c++/cppjs/20090208/155028.html)
用过没有用,用的是2008编译器

还要加上_DLL_ELOGEVENT
[/Quote]
没用,提示重定义!我想问题不在这里,我提的这个错误!
oyljerry 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wulin198550 的回复:]
引用 3 楼 na_he 的回复:
右击dll工程 -- 属性,打开属性页,展开:配置属性 -- C++ --预处理器,在预处理器定义的最后面填入:_AFXEXT
文章出处:DIY部落(http://www.diybl.com/course/3_program/c++/cppjs/20090208/155028.html)
用过没有用,用的是2008编译器
[/Quote]
还要加上_DLL_ELOGEVENT
wulin198550 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 na_he 的回复:]
右击dll工程 -- 属性,打开属性页,展开:配置属性 -- C++ --预处理器,在预处理器定义的最后面填入:_AFXEXT
文章出处:DIY部落(http://www.diybl.com/course/3_program/c++/cppjs/20090208/155028.html)
[/Quote]用过没有用,用的是2008编译器
oyljerry 2009-03-20
  • 打赏
  • 举报
回复
把_DLL_ELOGEVENT 定义到你的工程预编译宏中
wulin198550 2009-03-20
  • 打赏
  • 举报
回复
我的头文件这样定义的
#ifdef _DLL_ELOGEVENT
class __declspec(dllexport) CLogEvent
#else
class __declspec(dllimport) CLogEvent
#endif

实现文件这样:
#ifndef _DLL_ELOGEVENT
#define _DLL_ELOGEVENT
#endif
#include "头文件"
cnzdgs 2009-03-20
  • 打赏
  • 举报
回复
在DLL中定义导出标号要使用__declspec(dllexport);
调用其它DLL的导出标号时使用__declspec(dllimport)。
这个警告的意思是调用内部函数时使用了dllimport。
na_he 2009-03-20
  • 打赏
  • 举报
回复
右击dll工程 -- 属性,打开属性页,展开:配置属性 -- C++ --预处理器,在预处理器定义的最后面填入:_AFXEXT
文章出处:DIY部落(http://www.diybl.com/course/3_program/c++/cppjs/20090208/155028.html)
cppzhentan 2009-03-20
  • 打赏
  • 举报
回复
错误消息
在函数“function”中导入了本地定义的符号“symbol”


即使符号是本地定义的,仍为符号指定了 __declspec(dllimport)。移除 __declspec 修饰符以解决此警告。

symbol 是在影像内定义的符号名称。function 是导入符号的函数。

用 /clr 进行编译也会取消此警告。

当试图将两个模块链接在一起时,也将发生 LNK4217,此时,应改用第一个模块的导入库对第二个模块进行编译。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧