【发布时间】:2017-04-19 01:23:37
【问题描述】:
我正在尝试在 C# 应用程序中引用 DLL。 DLL 是用 C++ 编写的。要进行引用,我右键单击解决方案资源管理器上的“引用”部分并选择“添加引用”,然后浏览到它。每次我尝试,我都会收到一条错误消息
无法添加对 xxx.DLL 的引用。请确保 文件是可访问的,并且它是一个有效的程序集或 COM 组件。
在谷歌搜索后,我注意到很多人建议使用 TlbImp.exe 来获取有效的 DLL,但是当我在命令行运行它时,我得到了,
TlbImp:error TI0000 : 输入文件 xxx.dll 不是有效类型 图书馆。
我确实想到有问题的 DLL 可能只是写得不好(写它的小伙子现在正在度假)所以我通过this microsoft 演练创建了一个新的、非常简单的 dll,我得到了同样的结果。
我使用的是 VS2015,尽管我之前确实安装了 VS2013 Express。我还在另一台装有 VS2013 和 VS2010 的机器上尝试了相同的过程。效果是一样的。
有人有什么想法吗?
【问题讨论】:
-
听起来 DLL 不是 COM 服务器,它有一个基于导出的接口,应该通过 p/invoke 而不是通过 COM 引用调用。 (就像您链接到的示例一样)
-
您可以添加对另一个 .NAT 程序集或 COM 的引用。要使用本机 DDL,您需要使用 P/Invoke
-
见What are Native DLLs? - Stack Overflow 和windows - Correct name for non-COM, non-.NET DLL? - Stack Overflow。人们说“DLL”,这很令人困惑,因为它是模棱两可的。 DLL 有多种类型。
标签: c# visual-studio dll