簡體   English   中英

在 c++/cli 中加載 C# dll 並創建一個在非托管語言中工作的 dll

[英]load C# dll in c++/cli and create a dll that works in unmanaged language

我在 C# 中編寫了 selenium 腳本,現在我想公開所有功能並在 c++ 代碼中使用它們。 我的意思是將 dll 交付給想要在 pascal (delphi) 中使用此 dll 的某人。 C# 代碼是一個完整的代碼,我要做的就是在我的 C# 和 pascal 之間架起一座橋梁。 我發現 pascal 是一種非托管語言,因此 C# 代碼是托管語言,不能在 pascal 中使用。 For that reason, I started to write a c++ dll that uses my C# dll and makes a bridge between my C# and pascal code. 我已經閱讀了關於 stackoverflow 的所有可用主題,這些都是我發現有用的:

  1. 使用 COM 公開我的函數
  2. 使用 c++/cli 與我的 C# dll 進行通信。

我從第一個開始。 我能夠創建 COM 可見 dll 並在我的 c++ 本機代碼中使用它,但我遇到了數據類型問題。 我發現它很難,並轉向第二個選項。 但是我不確定我是否可以像這樣包裝我的所有函數並讓非托管語言使用它們。 我的 c# 代碼示例:

namespace MainEngine
{
public static class StartMainEngine
{
        public static void test_pascal(out string _result)
        {
            _result = "Hello World!";
        }
}
}

我的 c++/cli 代碼(我參考了我的 dll 和 Visual Studio 顯示了我的 dll 中的所有功能。所以,這不是 dll 導入問題):

#using<ManagedLibrary.dll>
using namespace MainEngine;
char* r;
StartMainEngine::test_pascal(r);

請指導我完成此操作,並讓我知道我是否以正確的方式執行此操作,以便能夠在帕斯卡中使用此 dll。

可以使用COMCLRIPC

您可以在主題中找到完整答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM