1.引言
自己在工作中,发现在一个项目是生成dll的,其中包含很多个头文件和cpp,但是其中一个头文件Test.h里面有一行代码是
bool DLL_EXPORT MyFunction(int a);
但是却没有Test.cpp来实现这个函数的定义
那就奇怪了,有了函数声明,但没有定义
2.我的思路
我的第一个思路是既然头文件是Test.h,那按照自己之前生成dll的方式,它生成的dll文件也一定叫Test.dll,用everything也没有搜到有这个文件
既然这样行不通,那我去看下是不是它又依赖其他的dll呢,打开依赖库文件,发现也没有一个叫做Test.dll或者MyFunction.dll,我这样想的原因是总觉得既然在这里生成,那应该名字也一样,现在看来,之前查的头蒙了,怎么能自己包含自己生成的dll呢,笑掉大牙
那我想有没有一个文件可以查我这个项目Test生成的Test.dll里面包含的函数呢,因为既然我的MyFunction是这个dll功能的一部分,那必然它在Test.dll里
于是发现了一款工具Dependencies,它可以查exe或者库所依赖的其他dll,之前第一次工作时,我的leader航哥就对我说过这个软件,但当时觉得这个名字好长,所以只有个印象,但没有记住
3.Dependencies
把Test.dll加载进去,点击左侧Test.dll,右边是上下两幅,上面是自己导入的,下面是给别人用的
从网上找个图代替下:
我在上面按Ctrl+F,搜MyFunction果然搜到了,并且发现它在bbb.dll中,这时我再去Test项目中看附加库依赖文件,发现确实有bbb.dll
至此问题解决