我正在尝试使用C#为Windows Mobile创建一个DLL,我有一个 我尝试在VC ++中访问DLL时出错。 可以在C#中创建DLL并使用Windows在VC ++中访问它 移动? 我正在使用Windows Mobile 6 SDK。 以下代码在Desktop中运行良好。
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; iThe 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 }
答案 0 :(得分:1)
您不能在Compact Framework中执行此操作,因为它缺少CLR hosting功能。本机应用程序无法在其自己的进程中启动执行引擎,因此无法加载托管代码。这意味着您自己的本机应用程序无法加载托管DLL,也无法加载设备浏览器。