今天碰到一个奇怪的问题,一个第三方的库,提供了A.dll和A.lib,编译的时候可以通过,运行的时候一直报错,说找不到A.dll。
我就在main函数那里设了断点,发现没有进main 函数的时候就已经报错了,应该是在入口函数的时候就error了。找不到load dll(load library)的函数,不明白为什么报错。
后来才知道,lib里面其实包含的东西非常少,用txt打开看,发现只有几个第三方的函数名,以及一串数字
func A.dll A.dll/ 1470723205 0 67
所以,其实lib里面包含的是dll里对应函数的位置,并没有具体的实现,而运行的时候则需要先将dll load进来,一找发现不在,当然就报错了。
这个是别人给的sample code里面的实现,并不是我们的实现。我们的实现是只包了dll这一个,lib没有要,然后直接在源代码里面用loadlibrary的方式,把dll load进来,所以没有dll的话,我们编译的时候并不会有问题,而运行的时候就会有问题了。