[英]Importing C++ DLL into C# Smart Device Application
在查詢了大量的博客和網頁並嘗試了人們解釋的幾乎所有內容之后,我問了這個問題。
我將C ++ Win32 DLL導入C#Windows應用程序沒有問題。 實際上,這很簡單。
但是我想做的是將C ++ DLL導入C#“智能設備應用程序”,尤其是使用Visual Studio 2005。
在我的(TestDLL.dll)C ++ DLL源文件中,有以下幾行:
#if defined (__cplusplus)
extern "C" {
#endif
__declspec(dllexport) void __cdecl foo();
#if defined (__cplusplus)
};
#endif
extern void __cdecl foo()
{
}
我的C#包裝器(Wrapper.cs)類具有以下內容:
[DllImport(TestDLL.dll)]
private static extern void foo();
public static void fooCS()
{
foo();
}
我的C#驅動程序類正在調用以下代碼:
Wrapper.fooCS();
然后將Pocket PC 2003設備連接到PC,然后開始調試並運行該程序。 我收到以下錯誤消息:
MissingMethodException:找不到PInvoke DLL'TestDLL.dll'。
我對我的DLL位置進行了三重檢查,所以這不可能是問題。 然后,我嘗試使用Visual Studio 2005中的許多不同模板。
但是似乎沒有任何效果。 總是相同的運行時錯誤。
構建解決方案時,我還嘗試更改CPU配置。 但是沒有幫助。
因此,我現在正在尋求專家的幫助。
僅供參考,我的設備具有以下平台:
開發環境是...
先感謝您,
對不起,我真的很傻。
應用程序無法加載DLL文件的原因是因為我正在移動設備上運行調試。 這導致了路徑問題。
因此,我手動將DLL文件和應用程序的EXE文件復制到了移動設備並運行了該程序。 它工作得很好。
漢斯(評論員),您是對的。 謝謝。 =)
現在,我的問題將變成如何輕松調試此問題。
我目前所知道的唯一方法是手動將DLL和EXE文件的發行版本復制到移動設備上並進行測試。 =(
有人知道更好的方法嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.