求VS筹建多个project的solution
求VS搭建多个project的solution
我们现在的项目,是一个solution,里面多个project,一个主工程,其它工程生成dll然后主工程调用别的工程生成的dll,能编译、能调试.
我以前也做过dll,我觉得,主工程调用这些dll,至少得用
这些东西吧,但我们的工程不是,没有用这些,就能调用别的工程生成的dll.我实在不明白为什么啊,求大神解惑.
------解决思路----------------------
使用的方式应该是:.h+.lib,这种会把引用关系编译到EXE中,通过工具DEPENDS能看到引用关系。
你说的loadlibrary,是没有这种引用关系的,是用时加载,不用时啥关系也没有,静态时更看不出关系来。
------解决思路----------------------
动态加载就是loadlibrary
静态就是设置连接lib路径吧
------解决思路----------------------
在VS中其实也一样,dll项目会生成一个lib和dll,lib文件作为编译链接信息在引用这个dll的另一些项目中需要在项目属性(附加依赖项)或者通过代码引用进来,这样就可以编译通过,而发布的时候,值需要exe+dll文件,lib文件是不需要的!
值得注意的是,这里提到的lib文件跟静态连接库lib文件不是一个东西
------解决思路----------------------
在补充几点吧:
动态链接库的加载方式分为隐式加载 和 显示加载。显示加载就是由程序在运行过程中通过loadlibrary等API来加载,用完立即freelibrary。而上面我说的就是隐式加载方式,在程序启动的时候直接把dll加载到内存,一切加载完之后主程序才启动。
但值得指出的是,隐式加载dll也是通过loadlibrary函数实现的,只不过不是由程序猿自己编码实现罢了!
我们现在的项目,是一个solution,里面多个project,一个主工程,其它工程生成dll然后主工程调用别的工程生成的dll,能编译、能调试.
我以前也做过dll,我觉得,主工程调用这些dll,至少得用
#pragma commen
loadlibrary
这些东西吧,但我们的工程不是,没有用这些,就能调用别的工程生成的dll.我实在不明白为什么啊,求大神解惑.
------解决思路----------------------
使用的方式应该是:.h+.lib,这种会把引用关系编译到EXE中,通过工具DEPENDS能看到引用关系。
你说的loadlibrary,是没有这种引用关系的,是用时加载,不用时啥关系也没有,静态时更看不出关系来。
------解决思路----------------------
动态加载就是loadlibrary
静态就是设置连接lib路径吧
------解决思路----------------------
在VS中其实也一样,dll项目会生成一个lib和dll,lib文件作为编译链接信息在引用这个dll的另一些项目中需要在项目属性(附加依赖项)或者通过代码引用进来,这样就可以编译通过,而发布的时候,值需要exe+dll文件,lib文件是不需要的!
值得注意的是,这里提到的lib文件跟静态连接库lib文件不是一个东西
------解决思路----------------------
在补充几点吧:
动态链接库的加载方式分为隐式加载 和 显示加载。显示加载就是由程序在运行过程中通过loadlibrary等API来加载,用完立即freelibrary。而上面我说的就是隐式加载方式,在程序启动的时候直接把dll加载到内存,一切加载完之后主程序才启动。
但值得指出的是,隐式加载dll也是通过loadlibrary函数实现的,只不过不是由程序猿自己编码实现罢了!