看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC 2008 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我有一個VB.NET 的x.dll 裡面有個 class a 內有function b 請問我有辦法直接使用嗎? 是先loadlibrary(x.dll) 再getprocaddress(a::b)嗎?? 又或者 需要其它方法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.88.189
GNUGCC:請問你的 VB.Net 的 x.dll 檔有用到 .Net 物件嗎? 07/28 01:00
GNUGCC:如果有的話你的 Visual C++ 必需設定為使用 CLR 功能才能使 07/28 01:04
GNUGCC:用 .Net 物件喔...因為就算找到函式位址也無法呼叫. 07/28 01:07
damody:去查 com 物件 以前有試過 vb call過來 c++ call 回去 07/28 07:57
GNUGCC:簡單說就是包含 .Net 程式無法跟純 CPU 指令碼程式一起使用 07/28 18:39
clv:那也是用loadlibrary(x.dll)再getprocaddress(a::b)嗎? 07/28 22:10
clv:因為我getprocaddress(a::b) 但根本捉不到資料 07/28 22:10
Baternest:CLR or COM 樓上都有人說了 07/28 23:25
GNUGCC:LoadLibrary() 跟 GetProcAddress() 這 2 個函式是針對原生 07/28 23:57
GNUGCC:DLL 檔使用,所謂的原生就是指裡面包含的是 x86 指令集機器 07/28 23:59
GNUGCC:碼,它不需要有 .Net 虛擬機器就能交給 CPU 執行,但相對的 07/29 00:00
GNUGCC:使用 .Net 產生出來的任何執行檔包括 .DLL 檔它裡面並沒有 07/29 00:04
GNUGCC:機器指令,它跟 Java 一樣是屬於中介語言檔,它需要有虛擬機 07/29 00:05
GNUGCC:器轉換成真正的機器碼才能執行,當你執行原生 C++ 程式時系 07/29 00:08
GNUGCC:統並不會交給虛擬機器做解碼而是由 CPU 直接執行,因為 .Net 07/29 00:13
GNUGCC:包含太多的資料型態定義與函式庫需要做動態連結,因為直接跳 07/29 00:17
GNUGCC:過虛擬機器,作業系統就會找不到原生 C++ 程式要使用的 .Net 07/29 00:20
GNUGCC:資料型態與物件了. 07/29 00:21
sunneo:http://ppt.cc/lOvE 07/29 00:38
Thelink:用COM來溝通。將.NET類別設定成ComVisible,並使用regsvr3 07/30 19:03
Thelink:2註冊。 Native c++ 使用COM的方式來呼叫就可以,只不過CO 07/30 19:03
Thelink:M在Native C++比較複雜。 07/30 19:03