标签: dll

如何在运行时指定[DllImport]路径?

事实上,我得到了一个C++(工作)DLL,我想导入我的C#项目来调用它的函数.

当我指定DLL的完整路径时,它确实有效,如下所示:

string str = "C:\\Users\\userName\\AppData\\Local\\myLibFolder\\myDLL.dll";
[DllImport(str, CallingConvention = CallingConvention.Cdecl)]
public static extern int DLLFunction(int Number1, int Number2);
Run Code Online (Sandbox Code Playgroud)

问题是它将是一个可安装的项目,因此用户的文件夹将不同(例如:皮埃尔,保罗,杰克,妈妈,爸爸......),这取决于计算机/会话的运行情况.

所以我希望我的代码更通用,如下所示:

/* 
goes right to the temp folder of the user 
    "C:\\Users\\userName\\AppData\\Local\\temp"
then go to parent folder
    "C:\\Users\\userName\\AppData\\Local"
and finally go to the DLL's folder
    "C:\\Users\\userName\\AppData\\Local\\temp\\myLibFolder"
*/

string str = Path.GetTempPath() + "..\\myLibFolder\\myDLL.dll"; 
[DllImport(str, CallingConvention = CallingConvention.Cdecl)]
public static extern int DLLFunction(int Number1, int Number2);
Run Code Online (Sandbox Code Playgroud)

最重要的是"DllImport"需要DLL目录的"const string"参数.

所以我的问题是::在这种情况下可以做些什么?

c# c++ dll constants dllimport

129
推荐指数
5
解决办法
13万
查看次数

哪里可以找到"Microsoft.VisualStudio.TestTools.UnitTesting"缺少dll?

我在C#visual studio项目中遇到以下错误:

命名空间"Microsoft"中不存在类型或命名空间名称"VisualStudio"(您是否缺少程序集引用?)

我也试图找到microsoft.dll文件,但无法获得任何参考.我在搜索错误的DLL吗?

using Microsoft.VisualStudio.TestTools.UnitTesting;  
using Kya.MsFx.Services.Swiper;

namespace Kya.MsFx.Devices.Swiper.Test
{
[TestClass]
public class SwiperWindowTest
{

    private SwiperWebServiceHost m_SwiperWS = null;
    /// <summary>
    ///     start web service on a separate thread, so tests 
    ///     can be executed withut blocking the application thread
    /// </summary>
    [ClassInitialize]
    public void SetupSwiperTests() {

        m_SwiperWS = SwiperWebServiceHost.StartService();

    }

    /// <summary>
    /// Stop service started during class initialize and kill the thread
    /// </summary>
    [ClassCleanup]
    public void CleanupSwiperTests() {
        m_SwiperWS.Stop();
    }


    /// <summary>
    ///   simulate init, …
Run Code Online (Sandbox Code Playgroud)

c# dll visual-studio-2010

122
推荐指数
6
解决办法
13万
查看次数

如何在Visual Studio中设置DLL文件的路径?

我开发了一个依赖于DLL文件的应用程序.当我调试我的应用程序时,应用程序会抱怨:

"此应用程序无法启动,因为找不到xxx.dll."

所以我必须将DLL文件复制到与我的.vcproj文件相同的目录中.

有没有办法设置项目在(最好)一些相对路径或(不是首选)某些绝对路径中查找DLL文件?

与我们如何在项目设置中设置包含和库路径的概念类似.

我的意思是当我调试我的应用程序(点击F5)时会弹出上面的错误.

dll visual-studio visual-c++

121
推荐指数
5
解决办法
18万
查看次数

如何查看DLL函数?

我有一个DLL文件.如何查看该DLL中的函数?

windows dll

116
推荐指数
7
解决办法
30万
查看次数

无法加载DLL(无法找到模块HRESULT:0x8007007E)

我有我需要在我的.NET 4.0应用程序中使用的非托管C++ API代码的DLL库.但我尝试加载我的DLL的每个方法都会出错:

无法加载DLL"MyOwn.dll":找不到指定的模块.(来自HRESULT的异常:0x8007007E)

我已阅读并尝试了我在互联网上找到的severa解决方案.什么都行不通..

我尝试过使用以下方法:

[DllImport("MyOwn.dll",  CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs((UnmanagedType.I4))]
public static extern Int32 MyProIni(string DBname, string DBuser_pass,
    string WorkDirectory, ref StringBuilder ErrorMessage);
Run Code Online (Sandbox Code Playgroud)

当我尝试按照这篇文章和我运行这个例子时(从下载的代码中)它运行没有问题(使用的DLL在bin/debug文件夹中)

我已将我的dll(以及它所依赖的所有文件复制到我的bin文件夹中).

我也试过这种方法,但得到了同样的错误:

[DllImportAttribute(MyOwnLibDllPath, EntryPoint="TMproIni")]
[return: MarshalAs(UnmanagedType.I4)]
public static extern  int MyproIni(string DBname, string DBuser_pass, 
    string WorkDirectory, ref StringBuilder ErrorMessage);
Run Code Online (Sandbox Code Playgroud)

有什么建议?

c# c++ dll pinvoke

105
推荐指数
7
解决办法
31万
查看次数

如何识别DLL是否是Debug或Release版本(在.NET中)

可能重复:
如何判断.NET应用程序是否在DEBUG或RELEASE模式下编译?

我确定之前已经问过这个问题,但google和SO搜索失败了.

如何识别DLL是发布版本还是调试版本?

.net debugging dll release build

102
推荐指数
2
解决办法
7万
查看次数

如何设置现有.exe,.dll的版本信息?

作为构建过程的一部分,我需要为所有已编译的二进制文件设置版本信息.一些二进制文件已经有版本信息(在编译时添加),有些则没有.

我希望能够应用以下信息:

  • 公司名
  • 版权声明
  • 产品名称
  • 产品描述
  • 文件版本
  • 产品版本

所有这些属性都由构建脚本指定,并且必须在编译后应用.这些是使用C++ Builder 2007编译的标准二进制文件(而不是程序集).

我怎样才能做到这一点?

windows versioning dll exe fileversioninfo

101
推荐指数
11
解决办法
14万
查看次数

ImportError:DLL加载失败:%1不是有效的Win32应用程序.但DLL就在那里

我有一个非常像ImportError的情况:DLL加载失败:%1不是一个有效的Win32应用程序,但答案不适合我.

我的Python代码说:

import cv2
Run Code Online (Sandbox Code Playgroud)

但该行抛出了此问题标题中显示的错误.

C:\lib\opencv在这台64位机器上安装了OpenCV .我正在使用64位Python.

我的PYTHONPATH变量:PYTHONPATH=C:\lib\opencv\build\python\2.7.这个文件夹包含cv2.pyd,就是全部.

我的PATH变量:Path=%OPENCV_DIR%\bin;...此文件夹包含39个DLL文件,例如opencv_core246d.dll.

OPENCV_DIR具有此值:OPENCV_DIR=C:\lib\opencv\build\x64\vc11.

ImportError的解决方案:DLL加载失败:%1不是有效的Win32应用程序,说"将新的opencv二进制文件路径(C:\opencv\build\bin\Release)添加到Windows PATH环境变量".但是如上所示,C:\lib\opencv\build\x64\vc11\bin我的PATH中已经有OpenCV二进制文件夹().我的OpenCV安装没有任何Release文件夹(build/java下的空文件夹除外).

关于出了什么问题的任何想法?我可以告诉Python详细跟踪加载过程吗?究竟是什么DLL正在寻找?

谢谢,拉尔斯

编辑:

我只注意到,根据http://www.dependencywalker.com/中,cv2.pydC:\lib\opencv\build\python\2.7为32位,而机器和我跑了Python是64位.这可能是问题吗?如果是这样,我在哪里可以找到64位版本的cv2.pyd?

python dll opencv path

101
推荐指数
5
解决办法
36万
查看次数

如何确定.NET应用程序的依赖项?

如何确定.NET应用程序的依赖项?Dependency Walker是否适用于托管应用程序?我已经下载了最新的并尝试过分析应用程序,但它只是在没有太多解释的情况下退出.如果它不能与.NET一起使用,那么是否有其他工具可以帮助我调试运行时DLL加载问题?

.net dll dependencies dependency-walker

100
推荐指数
8
解决办法
13万
查看次数

如何在Windows 7 64位上注册DLL文件?

我试过使用以下代码:

cd c:\windows\system32
regsvr32.exe dllname.ax
Run Code Online (Sandbox Code Playgroud)

但这不适合我.如何在Windows 7上使用64位处理器注册DLL文件?

dll 64-bit regsvr32 dllregistration windows-7

100
推荐指数
8
解决办法
123万
查看次数