c#互操作,没有找到库
C# Interop, Library Not Found
本文关键字:互操作 更新时间:2023-10-16
我计划将我的授权系统的核心转移到c++,但我仍然更喜欢。net前端进行设计。在任何情况下,我刚刚读完互操作功能,并决定把它进行测试。问题是,它在我这端工作得很好,但对其他用户来说就不行了。我让两个朋友在他们的电脑上测试了一个小程序,结果显示"无法加载xxx.dll"。找不到指定的模块。"
我让c#程序在与程序本身相同的路径中读取库,因此错误没有任何意义。如前所述,它对我来说工作得很好。
c#代码,
[DllImport("GuardImports.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.LPStr)]
public static extern string Gz_GetSystemKey();
我不能设置动态路径,因为DDLImport只接受常量变量。我想试试这样的东西,
private const string loc = Application.StartupPath + "/xxx.dll";
但是它显然不会工作,因为字符串不是常量。这个程序可以在这里下载(http://neetcloud.us/MqMIXc),如果有人感兴趣的话,没什么特别的。程序只是从库中接收一个散列字符串,并将其显示在消息框中。
根据评论中的讨论,您的问题似乎可能是您的c++ DLL是为调试而构建的,并且无法在没有安装Visual Studio的PC上运行。或者它可以,但是微软有各种各样的要求,并且说一般来说你不能这样做。
http://msdn.microsoft.com/en-us/library/aa985618.aspx经过一个非常非常长的夜晚,我已经调试了这个问题。存在的问题是,我没有在预处理器定义中定义导出。现在一切都很顺利。感谢那些花时间支持我的人。
相关文章:
- 如何读取 C++ SAFEARRAY**,该 SAFEARRAY** 是 COM 互操作的结果,其中 C# 返回值为
- 编译为 wasm 的 C++ 和 Rust 程序可以以某种方式互操作吗?
- 有什么语言可以与C++互操作吗
- 使 Flutter C/C++ 互操作示例正常工作
- C++互操作(隐式 PInvoke)的限制
- COM 互操作结构定义与内存布局不匹配
- _Complex 和 std::complex 之间的 C/C++ 互操作
- C# COM 服务器互操作 - System.InvalidCastException.
- 从C++与 C 灵活阵列成员互操作的正确方法是什么?
- 如何通过 COM 互操作访问复杂对象的属性?
- 如何区分"QObject"的亲子关系关注点,例如与其他所有者进行互操作?
- DirectWrite GDI 互操作:使用"IDWriteFontFace"绘制文本的简单方法
- opencl openGL互操作内核参数用于读取 写入
- Rust 互操作与 C++ std::string
- 将互操作 HwndSource 包装在 c++/cli 中,以用于本机 c++/MFC 应用程序
- 跨 C# 和 COM 互操作使用对象C++
- 尝试为c++互操作自动生成库时出错
- 在MS Visual Studio 2010上使用带有Cuda互操作的OpenGL缓冲区时出现异常错误
- WinRT 组件内C++类之间的互操作
- 从c#到c++的互操作传递结构