none
請教一下vb.net 封裝dll給dephi使用的問題 RRS feed

  • 一般討論

  • 教一下各位大大 今天碰到一個問題 問題如下

    有一個pc-base的控制板 安裝在電腦上 技術手冊上講解我需要用dll 裡的API去控制馬達的動作

    但問題來了 這塊卡的廠商本身有用vb.net去寫幾個範例檔 基本上就是調用這個dll 的API出來使用

    利用這個範例檔去發送指令 基本上是有效的 動作有出來 但是用dephi呼叫這個dll裡的API卻無效了

    動作都沒出來 

    

    我本身有用depend去觀察裏頭的API 都很正常 遽我目前谷歌後的資訊 dephi 對於任何dll都應該是相當友善的 

    但是現在用dephi 去調用這些API就是無法正常工作 所以我在想是否可以將已經可以正常工作的Vb.net的代碼

    封裝成dll 讓dephi去調用  這裡有個觀念 我不是很理解 就是說當dephi去調用vb封裝起來的dll 他是等於執行.net核心處理的代碼嗎 不是透過dephi的核心去執行這些dll裡的代碼 可以這樣理解嗎?

    另外 我不是很清楚VB.net 要怎麼封裝成 function  給dephi調用 希望這些知識希望有高手能不佞賜教

    • 已變更類型 璉璉Moderator 2014年1月25日 上午 02:32 難以重現
    2014年1月9日 下午 03:14

所有回覆

  • 把 VB.NET 的程式封裝成 COM 元件。

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2014年1月9日 下午 03:34
    版主
  • vb.net 有製作com 的教學嗎?
    2014年1月9日 下午 03:48
  • 將 .NET Framework 元件公開給 COM

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2014年1月9日 下午 04:36
    版主
  • 我已經把com 寫好 然後也生成了 reg檔到目標主機註冊 但是很奇怪的是 dephi 去呼叫這個com元件時

    卻不能工作 po照片給各位看看 請各位幫我分析一下是什麼原因?

    2014年1月10日 上午 02:56
  • 目標電腦有安裝Vs2010 編譯器 所以應該是有.net4.0

    所以我佈署也是用.net4.0佈署的 照理說版本應該是對應的

    dephi的編譯器會報錯 我很難理解 ..

    2014年1月10日 上午 03:06
  • 如果你確定 COM 是正確的, 那問題就出在你的Delphi Call COM 的寫法有問題.

    建議你去 Delphi 的討論區問問 Delphi 怎麼呼叫 COM


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2014年1月10日 上午 05:36
    版主
  • 你目標主機上有 .NET Framework 嗎....

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2014年1月10日 上午 06:03
    版主
  • 有的 目標主機安裝了VS2010 
    2014年1月10日 上午 06:34
  • 我把我封裝的com 編譯檔上傳到空間 請各位大大幫我看下是否有問題?

    com dll

    com 檔


    • 已編輯 向恩 2014年1月10日 上午 06:42
    2014年1月10日 上午 06:41
  • 剛剛使用了dephi 去呼叫這個com 

    dephi 2010好像要把tlb檔叫進來才能使用

    有在介面上看到這個com 

    但是出現了一些奇怪的錯誤信息 不知道是什麼狀況??

    我在這個com 裡有呼叫其他的dll 設計的API 

    不曉得這個錯誤是不是呼叫其他的dll 失敗造成的

    2014年1月10日 上午 06:51
  • 補充一點 我這邊已經把這裡要用到所有的Dll 跟相關檔案包含tlb檔放在一起了..

    還是出現上面那個錯誤

    2014年1月10日 上午 06:55
  • 建議先用ActiveX Control Test Container工具測試一下COM元件的功能是否正常? 如果正常再拿給Delphi用, 如果不正常, 則COM元件沒有做好

    2014年1月10日 上午 07:45
  • 我找到了這個工具

    然後我參考了這篇的實做 

    http://blog.yam.com/csylvia/article/14836238

    但是我找不到我註冊的這個com元件

    2014年1月10日 上午 08:36
  • 那您可以檢查一下註冊COM元件時是否有顯示錯誤訊息?
    2014年1月11日 上午 11:12
  • 置頂文這篇:

    關於Visual Basic 資源分享

    裡面有個連結:

    http://msdn.microsoft.com/zh-tw/vbrun/ms788241(en-us).aspx

    裡面有很多說明及範例是關於把 VBNET 程式封裝成 COM 給 VB6 的,可以先測試看看。通了以後再把同元件拿給 Delphi 用看看。

    以前 VB6 的年代,Delphi 還很紅得時候,我記得 VB6 跟 Delphi 的記憶體模型部分不一樣,新版的 Delphi 不知道是怎樣,應該線上手冊會有相關說明。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2014年1月11日 下午 12:13

  • 以上是我參考下面這個連結去弄得

    com註冊

    我先在自己的電腦註冊這個com 看起來是成功的 然後我把它生成一個reg註冊檔 將這個dll及註冊檔

    一起放到了目標主機上安裝 它也是成功的..   但結果是dephi 編譯器上產生很多錯誤

    但我有注意到一篇文章 下面這篇

    連結

    它寫了共用組件及私用組件這兩個類型 然後有一個這樣的工具 Gacutil.exe

    我在想是不是要把它弄成共用組件才能使用阿 我不太懂這塊

    所以我就參考了上面這個Gacutil去弄弄看

    但結果是失敗的..  不太清楚這塊的用法


    • 已編輯 向恩 2014年1月12日 上午 02:53
    2014年1月12日 上午 02:53
  • COM元件不需要安裝到GAC, 您可以先在自已的電腦執行ActiveX Control Test Container, 看能不能使用利用regasm註冊的元件, 如果可以再進行下一步.

    PS:目標主機上有安裝正確版本的.NET Framework嗎?

    2014年1月12日 上午 05:44
  • 有的 目標主機有安裝VS2010 我選用.net4.0去編譯這個com的

    我現在先在我自己的電腦非目標電腦上驗證this大大講的這個動作

    不曉得為什麼註冊進去的元件 沒看到我classlibrary 這個東西..

    2014年1月12日 上午 08:08
  • 你有用 x86 編譯嗎?

    不是 Any CPU。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2014年1月12日 上午 09:47
    版主
  • classlibrary中的類別有加入ComVisible之類別標示嗎?

    2014年1月13日 上午 05:39
  • 我嘗試用x86重新編譯 

    還是沒有看到...

    2014年1月13日 上午 09:18
  • 加了 是這個吧

    2014年1月13日 上午 09:20
  • 類別有沒有加? 類別也要加
    2014年1月14日 上午 10:09
  • 我是用VS本身的com 元件去建立的 我檢查了代碼圖片如下

    這樣應該算有加吧 

    2014年1月14日 下午 12:23
  • GUID是獨一無二的值嗎?

    2014年1月15日 下午 12:59
  • 我用VS2012 開檔 GUID自己建的 所以應該是吧.
    2014年1月15日 下午 07:06
  • 能在 VB6 或 x86 的 Office VBA 中看到這個 COM 嗎?

    隔壁這篇是 VB2008 做 COM 給 VBA 用,你也可以看看。

    http://social.msdn.microsoft.com/Forums/zh-TW/1f577aa2-4ac8-4a75-a24d-02da33a880ed/vbnet-2008-tlb-vba?forum=237


    T.L. Cheng

    2014年1月25日 上午 02:32
    版主
  • 我自己重新寫一個新的com創建一個form窗口的 還有讓呼叫API的com 讓VB6去調用 測試結果已經成功了 而且不用註冊 只要在VB6底下引用創建的tlb檔就好 

    測試過程中發現引用API的com 那些有api的dll要跟com的dll放在一起才能使用 我想dephi應該也是因為沒做

    這道程序 所以程序才報錯 目前還沒時間找寫dephi的人跟我一起測試 等測試過程還有問題我再發問 

    感謝各位大大的回覆


    • 已編輯 向恩 2014年1月25日 上午 03:06
    2014年1月25日 上午 03:06