2010-08-24 47 views
1

我試圖在C#中爲Windows Mobile創建一個DLL,並且當我嘗試訪問VC++中的DLL時,我有一個 錯誤。 是否可以在C#中創建一個DLL並使用Windows在VC++中訪問它 Mobile? 我正在使用Windows Mobile 6 SDK。 以下代碼在桌面上運行得非常好。smartdevice在VC++中的C#DLL

的C#代碼:

 
using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Runtime.InteropServices; 
namespace HttpLibrary 
{ 
    [ComVisible(true)] 
    [StructLayout(LayoutKind.Sequential)] 
    public struct StorageGroup 
    { 
     public int count; 
     public string[] Name; 
     public string[] sgdName; 
     public string[] logfolder; 
     public string[] systemfolder; 
    } 
    [ComVisible(true)] 
    public struct MyResult 
    { 
     public string Name; 
    } 
    [ComVisible(true)] 
    [Guid("F55EDB71-E3FC-4FC2-A25B-6E09C49B3E93")] 
    public interface IMyClass1 
    { 
     int helloWorld(); 
     StorageGroup getStorageGroup(); 
    } 
    [ClassInterface(ClassInterfaceType.None)] 
    [Guid("7B0D798D-DD45-41E1-A0D4-2FC453B36CED")] 
    [ComVisible(true)] 
    public class Class1 : IMyClass1 
    { 
     public Class1() 
     { 
      //constructor.. create object.. 
     } 
     public int helloWorld() 
     { 
      //dont do anything just return 10 so that client can get 
the return value.. 
      return 10; 
     } 
     public MyResult helloWorld(int i) 
     { 
      MyResult result = new MyResult(); 
      result.Name = "jigar"; 
      return result; 
     } 
     public StorageGroup getStorageGroup() 
     { 
      //Put code here.. 
      StorageGroup sg = new StorageGroup(); 
      int count = 3; 
      sg.Name = new string[count]; 
      sg.sgdName = new string[count]; 
      sg.logfolder = new string[count]; 
      sg.systemfolder = new string[count]; 
      sg.count = count; 
      for (int i = 0; i 

The C++ code:

#import "c:\\pocket\\HTTP_POST_CS\\HttpLibrary\\HttpLibrary\\bin\\Debug \\HttpLibrary.tlb" BOOL CHttpLibraryTestDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon CoInitializeEx(NULL, 0); HttpLibrary::IMyClass1Ptr pIMyClass1(__uuidof(HttpLibrary::Class1)); --->This line gives me a Raise Exception int i=-1; i = (int)pIMyClass1->helloWorld(); return TRUE; // return TRUE unless you set the focus to a control }

回答

1

,因爲它缺少CLR hosting能力,你不能在Compact Framework中做到這一點。本機應用程序無法在自己的進程中啓動執行引擎,因此無法加載託管代碼。這意味着您的本機應用程序無法加載受管DLL,設備瀏覽器也無法加載。

+0

謝謝...我會嘗試IPC解決方案... – 2010-08-25 14:17:45