VS C#Project:如何组织DllImport使用的第三方DLL

时间:2016-06-14 06:40:28

标签: c# c++ visual-studio dll

我有一个使用第三方C ++ DLL的Visual Studio C#项目。到目前为止,这些DLL中只有3个,所以它并没有让我把它们放在项目的根文件夹中,并具有以下属性:

Build Action: None
Copy to Output Directory: Copy Always

这导致DLL被复制到项目的/bin文件夹,并且一切正常 - 它们不会出现在已发布项目的根文件夹中。我引用这些第三方DLL:

public class MyDLL
{
    [DllImport("My_DLL.dll",
        EntryPoint = "?Unit@@YA?AUOutput@@UInput@@@Z",
        CallingConvention = CallingConvention.Cdecl)]
    public static extern MyDLLOutput Unit(MyDLLInput UnitInput);
}

最近我收到了几十个额外的DLL。我没有直接在我的应用程序中引用这些 - 这些DLL由我使用DllImport()引用的3个DLL中的一个使用。

将所有这些支持DLL放在项目的根文件夹中现在成为我的问题,因为它使项目变得混乱。我已经尝试将它们放在文件夹结构中,例如:

/ExternalDLLs/DLL1/dll1.dll
/ExternalDLLs/DLL1/SupportDlls/1.dll
...
/ExternalDLLs/DLL1/SupportDlls/24.dll
/ExternalDLLs/DLL2/dll2.dll
/ExternalDLLs/DLL3/dll3.dll

这导致已发布的文件夹结构:

/bin/ExternalDLLs/DLL1/dll1.dll
/bin/ExternalDLLs/DLL1/SupportDlls/1.dll
...
/bin/ExternalDLLs/DLL1/SupportDlls/24.dll
/bin/ExternalDLLs/DLL2/dll2.dll
/bin/ExternalDLLs/DLL3/dll3.dll

发布的文件夹结构不适用于我的DllImport()声明。我认为这是因为DllImport()期望这些直接位于/bin/之下。

如果需要,我不介意/bin/下面的文件夹结构。我也不介意是否每个DLL都被复制到/bin/而没有任何文件夹结构 - 尽管我似乎无法找到如何做到这一点,因为文件夹结构也被复制到/bin/。 / p>

有人能指出我最好的方法来克服这个问题吗?我没有看到DllImport()的属性来指定路径。我确信这是一项简单的任务,但我以前从未这样做过。希望我能够很好地解释这个问题!

THX。

0 个答案:

没有答案