我在 DLLImport 中使用的引用中看不到 Dll
I don't see the Dll in references which is used in DLLImport
我刚刚获得了第三方源代码,它基本上是另一个C 库的包装器项目:
我在此看到的代码如下:
[DllImport("QMSL_MSVC10D.dll", SetLastError = true, CallingConvention=CallingConvention.Cdecl)]
static extern byte QLIB_SendSync( uint hResourceContext,
short requestSize,
byte [] requestBytes,
ref short responseSize,
byte [] responseBytes,
ulong timeout
);
有趣的是,我在参考文件夹中没有看到" qmsl_msvc10d.dll"。他们说,它是动态加载的,但我在任何文件夹或参考列表中都看不到qmsl_msvc10d.dll。当我调试代码时,它会出现错误:
Unable to load DLL 'QMSL_MSVC10D.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
当我告诉他们这是正在发生的事情时,他们告诉我它是动态的。我是否缺少什么?
参考列表仅包含其他.NET组件您的程序引用和使用或com对象,但是您调用DllImport
的任何非管理代码从未在此处列出。正如供应商所说,它是按需动态加载的,并且不暗示编译时间参考,这就是为什么您看不到那里的原因。
但是,这并不意味着您在运行时不需要.dll本身。该文件必须在您的程序进行P/Indoke'D函数上的第一个调用时访问。查看您获得源的位置,他们必须为该第三方库提供它(否则代码是没有用的)。典型的做法是将DLL与Main .EXE一起放在一起,以便系统可以轻松找到它们。
如果将DLL添加到项目中(不是作为参考,而是作为"现有文件"),则可以将其Copy to output directory
设置为Copy always
,以便您始终在编译中可用。
相关文章:
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- 看不到文件'SDL2.lib'
- WSL 看不到环境变量
- 为什么我的 FreeRTOS 任务看不到类成员?
- Google Colab 看不到 .so 文件
- 派生类看不到基类成员
- 为什么我看不到字符串?
- CMake 看不到SDL2_PATH环境变量 (Windows)
- OpenMP 任务看不到共享变量的更改
- handleMessage看不到我的类和函数
- 为什么 connect() 函数看不到插槽?
- 模板类看不到继承的模板成员
- 为什么即使链接器找到目标文件,我的程序也看不到函数定义?
- 将 somedialog.h 包含在项目的其他部分中会使编译器看不到 ui_somedialog.h
- SFML - 代码::块看不到 sfml 图形(等)文件
- CMake 看不到源文件,找不到 #includes
- ifstream在OSX上看不到新内容
- C++概念看到我的类型的函数,但看不到 std::vector 的函数
- unique_ptr看不到派生类的自定义构造函数
- 为什么"gdb"看不到全局变量?