日期:2014-05-17  浏览次数:20844 次

Wince平台 c#语言 关于调用DLL的问题(该DLL为非托管)
c#源代码如下:
static class Program
    {
        [DllImport("Coredll.dll")]  //加载,释放,链接库,获得函数地址函数
        static extern IntPtr LoadLibrary(string lpFileName);
        [DllImport("Coredll.dll")]
        static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName);
        [DllImport("Coredll.dll", EntryPoint = "FreeLibrary", SetLastError = true)]
        static extern bool FreeLibrary(IntPtr hModule);
        [MTAThread]
        static void Main()
        {
            IntPtr hModule = LoadLibrary("omap_shell.dll");
            IntPtr farProc = GetProcAddress(hModule, "MemoryMap");
            Application.Run(new Form1());
        }
    }
问题:现在想要使用omap_shell.dll中的几个函数,在调式的时候,hModule,farProc的地址都可以获得,而且omap_shell.dll中的方法也可以调用,但是一旦运行的时候就会报错(该函数LoadLibrary报错)无法加载Coredll.dll,请教大家,到底是怎么回事呢?非常感谢诸位!
(Coredll.dll和omap_shell.dll已经放在了bin\debug目录下,在Wince的\windows\目录里也有了)
Dll? C# WinCE 无法加载

------解决方案--------------------
Coredll.dll是wince或mobile自带的
看看这个帖子对你有没有帮助
http://bbs.csdn.net/topics/250002731
------解决方案--------------------
调用dll出问题的时候我听别人说用depends工具找下缺少的依赖,后来解决了
不知道能帮到你不,可以下个depends工具查下
------解决方案--------------------
注意一下测c++和c#类型是否一致,调用c++最麻烦的就是参数类型 或者返回值类型,类型要一致
------解决方案--------------------
难道楼主调试和运行的环境不一样,或者有什么配置不一样,要不楼主检查一下调试时是不是有什么特殊配置
------解决方案--------------------
再次 考虑是不是 线程引发的冲突···