1樓:匿名使用者
這是個很常見的同結構同名類跨域互轉問題。
取決於應用環境,一般會有以下幾種處理方式。
此外,類似問題我在另一處已作答,僅供參考:
2樓:
首先 你確定返回型別是你找到的dll中的類,而不是同名的其他**類?
如果以上已經確認但是依然出現問題
你可以繼續用反射來訪問返回的變數 不需要轉換型別也能繼續使用
3樓:旁笑槐
這是因為這兩個dll的版本不一樣 你可以檢查下它們的md5是不是一樣
4樓:匿名使用者
利用反射呼叫dll,並使用dll中的類建立物件,型別必須加全域名。
不過你的問題是不是這個原因需要排查,另外,你可以為你的類定義一個介面,返回後強制轉換為介面試試。
我給你個,給定域名空間和dll檔案路徑及檔名、類名,動態建立物件的構造類。看看有沒有幫助。
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.reflection;
using system.collections;
namespace icom.commonlib
#endregion
#region +屬性
#region 狀態訊息
string _message = "";
////// 讀取狀態訊息。
///public string message
}#endregion
#endregion
#region 方法
////// 建立應用程式域。
/// 應用域名。
////// 成功標誌。
public bool createdomain(string domainname)
////// 動態建立物件。
/// 庫檔案路徑和檔名。
/// 物件名稱空間名及物件名稱。
////// 動態建立的物件或者空值(null)。
public object createobject(string dllfile,string objectfullname)
catch (exception e)
}return obj;
}#region 釋放物件
////// 釋放託管資源。
///public void dispose()
////// 釋放所有資源。
////// dispose呼叫標誌。
public class remoteassemblyfactory : marshalbyrefobject, idisposable
////// 建立遠端程式集。
////// 程式集所在dll檔案的路徑和檔名。
/// 程式集物件或空值(null)。
public assembly create(string dllfile)
catch (exception e)
}///
/// 釋放託管資源。
///public void dispose()
////// 釋放資源。
////// dispose呼叫標誌。
protected virtual void dispose(bool disposing)
//非託管
_disposed = true;}}}}
5樓:然後去遠足
先問題主這個 dll 是什麼語言編寫的?還是基於 .net 平臺的,還是 c++、dephi 等其他語言編寫的?
c#動態呼叫dll庫,方法返回型別是dll中定義的一個類,該如何引用
6樓:
還是跟引用物件一樣的
7樓:匿名使用者
無法直接引用,一般是通過反射去呼叫返回的類例項的方法或者或者獲取成員的值
C無法呼叫C 編的DLL,C 中如何呼叫DLL檔案?
就跟你說一下吧來,你源 這種是缺少dll依賴的mainifest導致的 為什bai麼你安裝了vcredist還不行du,這是zhi因為從vc2005 vc2008,crt和mfc庫都有好幾dao個版本,你們開發用的版本跟你安裝的vcredist是不同的版本 那怎麼解決這個問題,很簡單,從你的開發機器...
在C語言中用遞迴呼叫的方法如何求n
include int func int n int main 執行過程 func 5 5 func 4 5 4 func 3 5 4 3 func 2 5 4 3 2 func 1 當n為0的時候停止遞迴,返回結果 由於遇到1的時候返回1,那麼func 1 1所以結果是5 4 3 2 1 120 ...
js裡有兩個方法,怎麼實現其中方法呼叫另方法中的變數
第一種方法。1.首先準備好兩個js檔案。2.然後寫一個html檔案,通過方法,將兩個js引用到html檔案中。3.處於內下方的js檔案,就可容以直接呼叫上方js檔案中的內容了。比如我們在html中先載入了jquery,在第二個js可以使用dollar來對物件進行直接操作。4.因為js本身是不能執行的...