阅读:1630回复:2
为什么我编译通过,但链接找不到我指定库里的函数?
各位大侠:
我做了一个test.lib静态库,里面有几个函数,我把test.lib加在了passthru 的sources 中: PRECOMPILED_INCLUDE=precomp.h PRECOMPILED_PCH=precomp.pch PRECOMPILED_OBJ=precomp.obj TARGETLIBS=$(DDK_LIB_PATH)\\ndis.lib test.lib USE_MAPSYM=1 ... 我build 时编译通过,但链接找不到我指定库里的函数。我在应用层测过调用test.lib 里的函数,没有问题。 错误提示: miniport.obj() : error LNK2001: unresolved external symbol _opendev@12 敬请高手指教?是否跟passthru 的编译环境或设置有关? |
|
|
沙发#
发布于:2002-08-14 09:01
可能,你的test.lib中“opendev”的导出符号和你的驱动中连接符号不同;
你可以用下面的方法试试: 在test原程序中用 extern \"C\" 作为那个函数实现的前缀,在驱动中也用extern \"C\" 作为那个函数声明的前缀; |
|
板凳#
发布于:2002-08-14 09:28
emailxj兄,这个问题我也碰到过,当时是调用一个用户态的库,我当时觉得用户态的库不能在内核态调用,例如:如果用户态的lib里有调用malloc之类的用户态的内存分配函数的话,就不行了。
但是,你说的也很有道理,那是关于内核态编译和用户态编译的问题,能不能讲一下这两者的编译上有否差别? 先谢了!! |
|