C# 2.0 开发winform程序
[DllImport["kernel32.dll"]]
static extern IntPtr LoadLibrary(string lpFileName);
public void Fun()
{
   IntPtr p = LoadLibrary(abc.dll);
}
在32位xp系统下正常,可在64位windows 7系统下,p值返回为0abc.dll可在mfc程序里用loadlibrary正常调用。并不缺少任何其他相关dll。求解。

解决方案 »

  1.   

    abc.dll是64位的吗?存在权限问题吗?
      

  2.   

    谢谢孟子。
    abc.dll是32位vc6编译的mfc dll,
    我用vc2008 的mfc测试代码,可以正常运行。这说明应该不是权限问题吧
      

  3.   

    [DllImport["kernel32.dll"]]确定没有 "kernel32.dll" -》kernel64没用过w7。没法试。win2008出现过几回都是权限问题。用x86编译
      

  4.   

    kernel32.dll 在windows 7的system32里确定有。请问这里的权限问题是指什么?
    我所有的代码都是在32位操作系统下编译的。
      

  5.   

    把你的winform程序编译成x86的目标平台
      

  6.   

    Load一个其他dll试试看,如果其他的dll都可以,那说明还是你dll编译的问题。
    如果不可以,试试关掉UAC,或者看看system32目录是否有kernel32.dll或确认其是否正常工作。
      

  7.   

    谢谢楼上的回复。
    此问题已经解决,正如孟子所述,在应用程序的项目属性---生成---常规---目标平台,设置为x86,即可正常运行。
    这点,我觉得很奇怪,难道是微软的bug?
    感谢所有人的回复。
      

  8.   

    不是Bug,32位系统64系统执行路径是不同的
      

  9.   

    本帖最后由 net_lover 于 2012-10-08 14:51:44 编辑
      

  10.   

    64位的应用不能调用32位的dll,反之亦然。