簡體   English   中英

將C ++ DLL導入C#智能設備應用程序

[英]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中的許多不同模板。

  • MFC智能設備DLL
  • MFC智能設備
  • 應用程序Win32智能設備
  • 項目ATL智能設備項目
  • Win32 DLL

但是似乎沒有任何效果。 總是相同的運行時錯誤。

構建解決方案時,我還嘗試更改CPU配置。 但是沒有幫助。

因此,我現在正在尋求專家的幫助。

僅供參考,我的設備具有以下平台:

  • Windows Mobile 6經典版
  • CE OS 5.2.1433
  • 處理器:ARM920T

開發環境是...

  • Windows 7 64位
  • Visual Studio 2005

先感謝您,

對不起,我真的很傻。
應用程序無法加載DLL文件的原因是因為我正在移動設備上運行調試。 這導致了路徑問題。

因此,我手動將DLL文件和應用程序的EXE文件復制到了移動設備並運行了該程序。 它工作得很好。
漢斯(評論員),您是對的。 謝謝。 =)

現在,我的問題將變成如何輕松調試此問題。

我目前所知道的唯一方法是手動將DLL和EXE文件的發行版本復制到移動設備上並進行測試。 =(

有人知道更好的方法嗎?

暫無
暫無

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

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