我對處理DllImport的東西沒什麼經驗,所以如果你們中的任何人都能解決我的小問題,我很高興。我想導入一個在類中具有方法的dll。該方法應該返回一個字符串。如何在C#中使用DllImport處理導入dll的退貨?
所以here's一些代碼:
Form1.cs中(調用位置):
...
public partial class Form1 : Form
{
[DllImport("lang.dll")]
public static extern string[] getValues();
// |
//error occures here v
string[] labels = getValues();
Status prgmStatus;
public Form1()
{
...
language.cs(類我.dll文件):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace lang
{
public class language
{
public language()
{
}
public string[] getValues()
{
string[] content =
{
"User",
"Password",
"Login",
"Create new account ->",
"Repeat password",
"E-Mail adress",
"Register",
"<- Back to Login"
};
return content;
}
}
}
所以當我啓動我的程序時,它會調用dll的方法,並且會出現:
(圖片在這裏找到:
我怎麼可能避免這個錯誤並正確獲取數組?
感謝答案和解決方案, Paedow
更新:
它應該能夠從該路徑加載任何其他.dll文件,具有相同的結構,但其他內容。該DLL包含英語語言中窗體窗體的標籤。當有人想用他自己的語言來編寫這個程序時,他必須編譯一個帶有標籤的dll,然後替換dll。
另一個更新: 該dll文件不構建在相同的解決方案。該DLL是一個自己的解決方案,只有最終的.dll文件將用於我的程序,所以沒有引用。
您正在使用DllImport作爲託管程序集。DllImport是_meant_用於非託管程序庫。你有沒有考慮過使用調用託管程序集代碼的許多基於反射的方法? –
你也可以暴露一個接口,然後可以通過你的其他程序集消費 –