大家好几个小时后搜索并找到了我能找到的东西(因为我能找到的大部分内容都是在C ++上制作的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();
我希望我没有错过任何东西,但如果我这样做,我会尽力提供它。
EDIT。
忘了说,我发现了这个错误
无法找到名为' translate'的入口点。在DLL' ITranslate.dll'
答案 0 :(得分:2)
您不能使用DllImport来引用C#库。
相反,在项目中添加对DLL的引用,并将其用作任何其他引用(例如System.Windows.Forms
等)。
你不必拥有类ComVisible
或任何东西 - 所有.NET程序集都会公开它们的所有对象和元数据(使用private
和这些关键字有些限制,但最后,你可以通过一些工作得到那些。)