生成dll库
C# 和 VC++ 生成库的方法类似,只是不能生成静态库,只能生成动态库,工程配置如下:
然后编译就会生成dll文件了。
代码的特殊处理:
在对外的类和函数前面加上 public,才能被调用,如下:
调用dll
1.右键添加引用,但提示一个错误,如下:
解决方法:
a.以管理员身份打开 Developer Command Prompt for VS 2019(vs2019开发人员命令提示符)。
可能比较难以找到这个快捷方式,那么,可以通过 everything 来找到,如下:
b.定位到你的vs2019的安装目录,比如命令进入:
cd "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\PrivateAssemblies"
c.然后执行下面的命令,
gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll
结果提示失败,如下:
那么,该怎么办呢?从提示信息可以看出是找不到该文件,但是通过everything一搜索,该目录下确实有该文件,如下:
最后改成绝对路径就OK了,如下:
gacutil -i "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.11.0.dll"
当看到“程序集已经成功添加到缓存中”,重启VS即可。
2.把dll添加进来,如下:
3.代码的特殊处理:
比C++的简单多了,无需任何特殊处理,就和调用代码一样调用就行。
问题:
但是,运行的时候,到了调试dll的地方,就中断了,再也跑不起来了,如下 :
解决方法:
1.“处于中断模式”只是表面,要看异常的具体提示“未能从程序集XXXX...加载类型XXX", 原因是我的exe程序和dll文件时使用的相同的名字,把dll的生成名字改一下就行,如下: