有人能告訴我在Oxygene for .NET中如何找到一個如何製作DLL(WindowsControlLibrary)的例子嗎?
在舊的Delphi中,您創建了一個導出部分。Oxygene中的DLL示例
0
A
回答
2
要使用德爾福棱鏡創建一個非託管的DLL導出和與2010年德爾福叫什麼你必須做到以下幾點:
在德爾福棱鏡:
- 文件|新增|項目
- 在樹視圖在左邊,選擇德爾福棱鏡
- 選擇Windows類庫
按OK。
這將創建的模板的Windows類庫
右鍵單擊該項目「ClassLibraryX」,然後選擇屬性:
- 在兼容性選擇「允許不安全的代碼」
- 在構建,找到General Section並將CPU Type更改爲「x86」
- 右鍵單擊已創建的「ClassLibraryX」選項卡並選擇「Save selected Items」
設置該項目以支持UnmanagedExportAttribute。
然後在代碼中,您將需要創建一個類方法。在下面的例子中,我添加了對System.Windows.Forms的引用。
namespace ClassLibrary2;
interface
type
Class1 = public class
private
protected
public
[UnmanagedExport('ShowMessage')]
class method ShowMessage(aMsg : String);
end;
implementation
class method Class1.ShowMessage(aMsg : String);
begin
System.Windows.Forms.MessageBox.Show(aMsg);
end;
end.
使用PEViewer,我用了一個船舶在JCL一個例子,你應該能夠看到新的出口。在上述exampele「ShowMessage」
1
如果你whant,使其與德爾福兼容,那麼你必須表明「STDCALL」調用約定
命名空間ClassLibrary2;
接口
類型 的Class1 =公共類
私人
保護
公共
[UnmanagedExport( 'ShowMessage'),System.Runtime.InteropServices.CallingConvention。 StdCall]
類方法ShowMessage(aMsg:String); 結束;
實施
class method Class1。ShowMessage(aMsg:String);
開始
System.Windows.Forms.MessageBox.Show(AMSG);
end;
結束。
相關問題
- 1. DLL中的單例?
- 2. Oxygene中的命名空間別名
- 3. 流到Oxygene的字節數組轉換
- 4. 爲什麼許多nHibernate示例代碼實例包含Castle dll?
- 5. DLL中的單例被破壞
- 6. 從DLL的新實例
- 7. 在IIS中運行Web服務的Dificulty - Oxygene
- 8. Oxygene中的Java表達式「Class.class」等效於什麼?
- 9. 如何將字符串轉換爲Oxygene中的整數
- 10. iOS中的MVVM示例/示例實現
- 11. PopupMenu在DLL中不顯示
- 12. 如何在Oxygene中添加一個事件?
- 13. 我如何在Oxygene中聲明一個全局方法
- 14. 從DLL/Assembly獲取實例?
- 15. ASP.NET DLL實例衝突
- 16. 從DLL/Assembly獲取實例?
- 17. 錯誤創建共享庫DLL文件痛飲的Lua示例(Windows 7)中
- 18. 如何獲取Windows SDK中的資源DLL代碼示例編譯並運行?
- 19. VC++將示例應用程序轉換爲DLL
- 20. 調整示例DLL代碼時獲取無效圖像
- 21. 防止在例外情況下顯示dll源代碼
- 22. 如何共享一組DLL,依賴項和示例程序?
- 23. RTD - 將示例COM DLL製作成COM文件
- 24. WeakHashMap中示例
- 25. 共享DLL中有多個單例實例嗎?
- 26. COM例外:0x800702E4在第三方DLL在訪問中引用的DLL函數
- 27. 奇怪的CLR錯誤而OXYGENE .NET處理可空類型
- 28. .NET DLL和線程/不同的實例
- 29. 沒有實例化的訪問DLL
- 30. Java實例化來自DLL的C++類
謝謝。 我用一個過程做了一個簡單的ClassLibrary,但是當我嘗試從Delphi2010應用中讀取時,它找不到該條目。 應該有可能嗎? 這是否意味着,只有其他Prism2010可以訪問該dll? 我想從Delphi2010應用程序訪問DLL – 2009-10-30 12:32:39
更新了答案以顯示我做了什麼來創建導出。 – 2009-11-02 13:53:47