[英]c++ calling functions from c#-dll fails
我編寫了ac#(net 3.5)dll,並通過Robert Giesecke的“非托管導出”導出了一些功能:
[DllExport("VersionString", CallingConvention =
CallingConvention.Cdecl)]
public static string VersionString() { .... return "test"; }
然后我為我的c#-dll寫了一個c ++包裝器。 在c ++中,我調用LoadLibrary
和GetProcAddress
以獲取對ac#函數的引用。
我可以調用該函數以獲取返回值。 奇跡般有效。
HINSTANCE hJConnectInstance = LoadLibrary(L"JConnect.Base.dll");
typedef char *(__cdecl *func_i)();
func_i net_function = (func_i)GetProcAddress(hJConnectInstance, VersionString");
std::string result = std::string(net_function());
std::cout << "csharp result: " << result << std::endl;
但是我的目標是從.net返回JSON字符串,因此我將Newtonsoft.json添加到了我的C#項目中。
現在,每次我從包裝器調用c#函數時,我都會在c ++中遇到錯誤。 該錯誤不在c#代碼中,因為從另一個c#項目中調用該錯誤時,它可以工作。
我什至不知道c ++會引發什么樣的錯誤,因為我不知道如何正確地捕獲它。 (我是C ++菜鳥)
問題:
謝謝!
閱讀了Hans Passant的評論后,我發現了問題所在。 我能夠收到一條錯誤消息,通知我我所引用的dll的一個沒有好名字。 更正解決了問題。
謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.