【问题标题】:Error referencing DLL in C# "A reference to xxx.DLL could not be added [closed]在 C# 中引用 DLL 时出错“无法添加对 xxx.DLL 的引用 [关闭]
【发布时间】: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 的机器上尝试了相同的过程。效果是一样的。

有人有什么想法吗?

【问题讨论】:

标签: c# visual-studio dll


【解决方案1】:

将您的 dll 包含在您的项目中,然后将其作为资源嵌入,如果更新或始终选择将其复制到输出目录:https://static1.squarespace.com/static/508eb96ae4b047ba54db4e47/t/519e1809e4b01e6a03d7f51b/1369315338280/properties.png?format=750w

然后使用平台调用:

[DllImport("nameofyourdll.dll")]
public static extern void methodnameinyourdll(string param1, string param2);
public static void Main() 
{
    methodnameinyourdll("test1", "test2");
}

有时您可能必须使用本机类型,但它们与 CLR 不兼容以避免使用编组: https://www.codeproject.com/articles/66245/marshaling-with-csharp-chapter-1-introducing-marsh.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多