我有一些关于C++的初学者问题。 我已经下载了Windows SDK,并根据文档,所有蓝牙流量使用winsock。如果我想编程蓝牙接口,Windows SDK包含头文件(.h)。反向头文件/链接
a)这是一个普通的C++问题:头文件winsock.h如何链接到特定的dll?我没有指定任何链接。如何检测与此标头链接的所有.dll文件? 是不是头文件假设只包含函数的名称和dll中的实际实现?我有点困惑。
我的第二个目标是用修改后的版本替换windows winsock函数。我想保留原有的功能,除非由其他应用程序设置的某个标志设置为true。在这种情况下,我想修改一些功能。 我的方法是创建一个新的DLL,它将具有相同的函数名称,如头文件winsock.h中所示。
b)假设在原始的winsock中存在函数fff。我将用一个新函数替换它,除非该标志为真,否则调用相同的函数fff,但在未修改的dll中,也就是说,我希望在这种情况下从未修改的dll“包含”原始函数和“过载”我修改过的fff函数,具有原始的fff函数。这两个函数具有相同的参数和相同的名称。我怎么样?有更好的方法来实现相同的目标吗?
c)允许应用程序设置的标志在dll中可访问的最佳方式(或简单方法)是什么?
d)Winsocket是一个非常重要的组件。如果我为其中的每个函数添加一个命令,我是否应该预期性能会大幅下降?
谢谢!
不同意a)。在MS(和兼容)编译器中,有一些用于定义使用哪个库的编译指示。例如。 '#pragma comment(lib,“foo.lib”)'可以被添加到头文件中。 –
@Mats我明白你的观点 - 编译指示允许.h指定库文件 - 但是我觉得它并没有改变我试图对什么头文件和.lib文件(通常)做的基本点。 –
是的,我明白你在说什么,通常它适用。但是,特别是MS有向这些头文件添加这些编译指示的倾向。对于某些人来说,这可能会让人感到困惑,因为“它自动地起作用”,然后在另一个平台上,“你需要做一些事情来使图书馆工作”> –