阅读:1258回复:4
有关KTrace引用,编译错误问题。求解...
DriverWork
我在RegSample.cpp中声明了变量 KTrace t("RegSample"); 用来跟踪调试。 在RegSampleDevice.cpp我引用了这个变量 extern KTrace t("RegSample"); 结果编译报错: regsampledevice.obj : error LNK2005: "class KTrace t" (?t@@3VKTrace@@A) already defined in regsample.obj objchk_wxp_x86\i386\regsample.sys : error LNK1169: one or more multiply defined symbols found 但还是生成了RegSample.sys文件。 现注释掉RegSampleDevice.cpp中的“extern KTrace t("RegSample");”,问题解决了。 但我发现在RegSample.cpp声明的 UNICODE_STRING SampleRegistryPath; 在RegSampleDevice.cpp中却必须引用进来 extern UNICODE_STRING SampleRegistryPath; 不然编译不过。 请问这是为什么? 谢谢! |
|
沙发#
发布于:2005-01-24 15:39
extern KTrace t("RegSample");
改为 extern KTrace t; 因为你已经定义了,现在只需要声明 如果你对UNICODE_STRING SampleRegistryPath; 进行付值,同样会有这样的错误 |
|
|
板凳#
发布于:2005-01-24 17:04
全局变量当然要了
最好在*.h中对全局变量声明, 这样就不用没用到一个做一次引用了 例如 形如extern UNICODE_STRING SampleRegistryPath 最好都放到*.h中 |
|
|
地板#
发布于:2005-01-25 15:05
菜鸟谢谢各位啦
另外问一下,分数怎么给? 还是自动分配? 谢谢! |
|
地下室#
发布于:2005-01-26 08:44
你的主贴右下角有给分按钮
|
|
|