问题环境:有两个c++dll,A、B,A会调用B,A里面是调用方法,B里面是加密狗的信息。我的c#程序里面只用调用A里面的方法,但调用A的时候必须同时加载B才能找到加密狗文件通过验证。
问题:
1、调用A的时候c#会自动加载B吗?
2、[DllImport("A.dll")] 这种一次只能写一个dll,如果要同时加载进入多个dll,有什么方法或思路?
回答:
1、在控制台窗体应用程序里 ,会自动加载B。在Web网页应用程序里,不会自动加载B。
2、DllImport方式在Web网页应用程序里不能同时加载多个有关联的DLL,在控制台窗体应用程序里,加载一个,会自动加载其他有关联的DLL。
写了篇博客:http://www.cnblogs.com/heifengwll/p/3995441.html
批量的似乎不能,你确定目录对么,[DllImport("A.dll")]这句代码所在DLL需要和A在同一个目录里
所有的dll都放在了bin目录下了,在试试看看动态加载的东西
会自动加载的,你只要import你需要调用的dll就可以了
好像没自动加载,返回来错误码表示加密狗文件没找到
1、通过DllImport导入外部Dll里的方法,具体的导入,参考DllImport的参数。
2、被导入的外部Dll一般来说,放在执行文件夹(web就是bin文件夹,desktop就是可执行文件的文件夹),如果dll又引用了其它的Dll(如你说的A与B的关系),也一并放在一起。
3、Dll还有一个放置的地方是System32文件夹,System32只指的是Windows系统目录下的文件夹。
同一个目录,或者GAC。