簡體   English   中英

用C#編寫的DLL,試圖導入到另一個C#項目(DLL不能在根目錄下)

[英]DLL made in C#, trying to import to another C# project (DLL can't be on root directory )

嗨,大家經過幾個小時的搜索和搭售我能找到的東西(因為我能找到的大部分是在C ++上制作的DLL到C#項目中,這不是我想要的)我帶着一個問題來到這里:D。

我正在嘗試運行該程序,但希望DLL文件位於另一個目錄中(例如,程序位於c:\\ Programs \\ Program和DLL:c:\\ Libs上)。

我已經在C#中創建了一個具有各種公共方法的DLL,我想在我的程序中訪問它。

DLL我有這樣的事情:

[ComVisible(true)]
[Guid("6E873AA1-1AD6-4325-BBFD-EF22A3EB80CC")]
public interface ITraducoes
{
    [ComVisible(true)]
    void changeLang(String lang);
    [ComVisible(true)]
    void translate(Control form);
    [ComVisible(true)]
    string toolTipText(Control form, String toolTip);
    [ComVisible(true)]
    string[] listText(Control form, String lista);
    [ComVisible(true)]
    string[] getMessagesArray();
    [ComVisible(true)]
    Hashtable getMessagesTable();
}
#region Traducoes Class
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
[Guid("AE53E0A3-8261-4706-8861-0249F7390642")]
//[ProgId("ITranslate.Traducoes")]
public class Traducoes : ITraducoes
{...

在程序上我有這樣的事情:

[DllImport("ITranslate.dll", CallingConvention = CallingConvention.Cdecl)]
extern static void translate(Control form);
[DllImport("ITranslate.dll")]
extern static string[] getMessagesArray();

然后我就這樣打電話:

public Form1(string[] args){
    InitializeComponent();                  
    translate(this);
    msg = getMessagesArray();

我希望我沒有錯過任何東西,但如果我這樣做,我會盡力提供它。

編輯。

忘了說,我正在解決這個錯誤

無法在DLL“ITranslate.dll”中找到名為“translate”的入口點

您不能使用DllImport來引用C#庫。

相反,在項目中添加對DLL的引用,並將其用作任何其他引用(例如, System.Windows.Forms等)。

您不必擁有ComVisible類或任何東西 - 所有.NET程序集都會公開它們的所有對象和元數據(使用private和此類關鍵字有些限制,但最終,您可以通過一些工作獲得這些關鍵字)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM