为爱,唯爱
2021-10-26 14:52
采纳率: 50%
浏览 882

100¥悬赏一个问题解决办法(C#)

目前在做一个关于N卡超频的代码,已经借用了


但是在实际使用过程中,调用nvml.dll的时候出现错误(此处代码完整的复制过来无任何改动)
且参考的程序bin文件夹下无nvml.dll(已自己解决)

img

在使用copy来尝试复制该dll则出现以下提示(仍需要解决)

img

使用参考的软件,则正常访问,copy。

  • 好问题 提建议
  • 收藏

9条回答 默认 最新

  • mickers 2021-10-28 18:37
    已采纳

    首先项目平台要一致(百度到的代码 Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles),需要区分32位与64位)
    再进一步缩减代码,做一个小demo(问题简单化)就知道代码究竟错在哪里

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 爱晚乏客游 2021-10-27 09:30

    应该是nvml引用了其他的dll,你拷贝的时候并没有一起拷贝过去。所以不建议拷贝,直接在原来的位置上面调用。
    下面是dependency walker简单查看dll内部情况,而且还是我拷贝到桌面,少调用一些找不到dll的额情况了

    img

    img

    评论
    解决 1 无用
    打赏 举报
  • 王大师王文峰 2021-10-26 14:56

    这个容易,
    你的程序提示“无法在 DLL“XXX.dll”中找到名为“XXX函数”的入口点”这个错误,你可以考虑考虑看看你的dll有木有这个函数

    评论
    解决 无用
    打赏 举报
  • CrisYoung 2021-10-26 15:52

    你C盘那个路径下有这个dll吗,没有吧

    评论
    解决 无用
    打赏 举报
  • CrisYoung 2021-10-26 16:22

    试一下项目那里右键“管理NUGet程序包”,然后搜索nvml下载,点击安装,然后在项目根目录下的package文件夹里找到nvml.dll复制到输出目录

    评论
    解决 无用
    打赏 举报
  • MickeyXcH 2021-10-26 18:45

    可能需要注册一下dll regsvr32

    评论
    解决 无用
    打赏 举报
  • Afile 2021-10-27 03:09

    比较可能是DLL文件和执行程序的32位/64位问题。

    评论
    解决 无用
    打赏 举报
  • 急速光粒 2021-10-27 13:02

    如果本目录没有nvml.dll,则不需要system32下面的nvml.dll。也不需要在代码里面自己拷贝。放好需要的dll就行。你目前的情况应该是缺少dll而在代码里面copy,而copy中又发生缺少文件的情况导致的。

    评论
    解决 无用
    打赏 举报
  • Micheal_NET 2021-10-28 17:32

    1、先将nvml.dll从C盘复制到你的项目中的一个lib文件夹。
    2、引用这个dll.
    3、通过这个方法加载dll

      /// <summary>
            /// 获取服务类&方法
            /// </summary>
            /// <param name="serviceName"></param>
            /// <returns></returns>
            private object GetService(string serviceName)
            {
                object res = null;
                switch (serviceName)
                {
                    case "SecurityService":
                        res = new SecurityService();
                        break;
                    default:
                        Type type = System.Reflection.Assembly.Load("Bingosoft.Metro.Mobile").GetType("Bingosoft.Metro.Mobile." + serviceName);
                        if (type != null)
                            res = type.Assembly.CreateInstance(type.FullName);
                        else
                            res = null;
                        break;
                }
                return res;
            }
    
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题