用c#制作的DLL,试图导入到另一个c#项目(DLL不能在根目录上)

本文关键字:DLL 不能 项目 根目录 另一个 导入 | 更新日期: 2023-09-27 17:53:49

嗨,伙计们经过几个小时的搜索和我能找到的东西(因为我能找到的大部分是在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 ' ittranslate . DLL '中找到名为'translate'的入口点

用c#制作的DLL,试图导入到另一个c#项目(DLL不能在根目录上)

不能使用DllImport来引用c#库。

相反,在项目中添加对DLL的引用,并像使用任何其他引用一样使用它。System.Windows.Forms等等)。

你不必有ComVisible之类的类——所有的。net程序集都公开了它们所有的对象和元数据(使用private和这样的关键字有些限制,但最终,你也可以通过一点工作获得这些)。