如何查找从哪里导入程序C++特定功能

How to find where specific function in C++ program is being imported from?

本文关键字:程序 导入 C++ 功能 何查找 查找      更新时间:2023-10-16

所以我有一个C++程序中使用的函数my_func。 我以为我知道它是从哪里导入的,但是修改源文件中的函数(我认为是什么)并没有导致我的C++程序在运行时发生任何更改。 这让我认为该函数可能是从我不知道的其他地方导入的。 我是否可以弄清楚my_func是从哪里导入的?

1/具有不定期函数的源文件是同一可执行文件的一部分,还是 dll 的一部分?如果是 dll,一个非常常见的错误是编译和链接没有问题,但文件的实际复制不起作用,因为 dll 正在使用中。或者您已经在另一种模式下编译和链接(发布与调试,32 与 64...

2/像 grep 和 find 这样的基本工具是你在 Linux 下的朋友:找到。-名称 '*.hpp' -打印0 |xargs -0 grep -n 'my_func'

即使在非常大的代码库(2数百万行或更多)上,这也不应该超过分钟

3/在Visual Studio上,您可以缩小对包含标头的搜索范围,使用选项/showInclude列出cpp文件:它递归列出所有包含标头。您的my_func必须在其中一个标头中声明

最简单的方法是不链接提供它的东西。 这将为编译器提供有关未找到的项目的诊断,以及文件(以及需要它的功能)的一些想法。