用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'的入口点
不能使用DllImport来引用c#库。
相反,在项目中添加对DLL的引用,并像使用任何其他引用一样使用它。System.Windows.Forms
等等)。
你不必有ComVisible
之类的类——所有的。net程序集都公开了它们所有的对象和元数据(使用private
和这样的关键字有些限制,但最终,你也可以通过一点工作获得这些)。