dllimport相关内容

从 C++ 调用 DLL 中的函数

我在 VS 2008 中有一个解决方案,其中包含 2 个项目.一个是用 C++ 编写的 DLL,另一个是从空白项目创建的简单 C++ 控制台应用程序.我想知道如何从应用程序调用 DLL 中的函数. 假设我从一个空白的 C++ 项目开始,我想调用一个名为 int IndependentFunction(int someParam) 的函数 我怎么称呼它? 解决方案 有很多方法可以做 ..
发布时间:2021-12-25 15:50:11 C/C++开发

C# 结构没有无参数构造函数?看看我需要完成什么

我正在使用一个结构体来传递给一个非托管的 DLL - [StructLayout(LayoutKind.Sequential)]公共结构 valTable{公共字节类型;公共字节映射;公共字节备用1;公共字节备用2;public int par;公共国际分钟;公共字节[]名称;公共 valTable(){名称 = 新字节 [24];}} 上面的代码将无法编译,因为 VS 2005 会抱怨“结构 ..
发布时间:2021-12-23 17:18:59 C#/.NET

MSVC 中的链接错误 LNK2019,带有 __imp__ 前缀的未解析符号,但应该来自静态库

对于我为 g++ 编写的项目,我在 MSVC 中遇到了链接问题.问题来了: 我将 libssh 作为静态库构建为我的应用程序的一部分,在 cmake 中添加目标 add_library(ssh_static 静态 $libssh_SRCS) Libssh 使用 C 语言,所以我在我的 C++ 源代码中使用了 'extern "C" {...}' 来包装包含.然后我使用 将 ss ..
发布时间:2021-12-22 18:29:12 其他开发

PInvokeStackImbalance C# 调用非托管 C++ 函数

切换到 VS2010 后,托管调试助手显示有关从 C# 应用程序调用非托管 C++ 函数导致堆栈不平衡的错误. 通常的嫌疑人似乎不是导致问题的原因.还有什么我应该检查的吗?VS2008 构建的 C++ dll 和 C# 应用程序从来没有出现过问题,没有奇怪或神秘的错误 - 是的,我知道这没有多大意义. 以下是检查的内容: dll 名称正确. 入口点名称是正确的,并且已经使用de ..
发布时间:2021-12-14 19:28:03 C#/.NET

如何在 DLL 中使用类?

我可以将类放入 DLL 中吗?我写的课是这样的: 类 SDLConsole{民众:SDLC控制台();~SDLCConsole(){};void getInfo(int,int);void initConsole(char*, char*, SDL_Surface*, int, int, int);void sendMsg(char*,int, SDL_Surface*);void cls(S ..
发布时间:2021-12-09 21:38:08 C/C++开发

ADODB.Parameters 错误 '800a0e7c' 参数对象定义不正确.提供了不一致或不完整的信息

我主要是一名 PHP 开发人员,但我有一些我们以前的开发人员制作的旧 ASP 坏了,我不知道如何修复它.我们有一个程序将一些变量发送到侦听器页面,该页面将这些数据与 msSQL 数据库中的注册代码进行比较,然后让程序知道注册代码是否有效. 我收到以下错误 .Parameters.Append .CreateParameter(“@code", adVarChar, 1, 50, x) 是 ..
发布时间:2021-11-29 09:15:46 其他开发

"试图读取或写入受保护的内存.这通常表明其他内存已损坏"DllImporting C#

我在尝试将数据编组到我的 DLL 函数并返回到 C# 代码时遇到这个奇怪的错误.我没有看到我在哪里传递空值或读取无效内存,而且这个错误非常模糊.有什么线索吗?? 代码如下: FeeCalculation 函数在 DLL 中导出如下: extern "C" __declspec(dllexport) void __stdcall FeeCalculation(char *cin,cha ..
发布时间:2021-11-26 20:16:09 C#/.NET

在循环中使用方法 Marshal.PtrToStructure 时的访问冲突异常

在我的程序 (C#) 中,我使用 Marshal.PtrToStructure 方法将对象转换为循环中的结构体添加内存地址.在第一个元素,这个工作正常.但是在第二个元素处,发生了访问冲突异常. 访问冲突异常只发生在win 7(64位)上,win xp(32位)上不会发生. 我不知道原因和解决方案. 请帮帮我. 注意:我使用 .NET Framework 3.5. 代码 ..
发布时间:2021-11-26 20:12:44 C#/.NET

CPU 架构独立 P/Invoke:DllName 或路径可以是“动态的"吗?

有没有办法让 P/Invoke (DllImport) 签名引用的特定 DLL 依赖于 CPU 架构? 我正在开发一个应用程序,该应用程序从第三方供应商的本机 dll 加载大量方法签名,在本例中是用户空间接口 DLL 到一块硬件.该供应商现在已经开始提供 x86 和 x64 版本的 DLL,我认为我的应用程序将受益于作为 64 位进程运行.除了这个 DLL,一切都是 .NET 代码,因此构建 ..
发布时间:2021-11-26 14:40:40 C#/.NET

在 C# DllImport 中使用 32 位或 64 位 dll

情况是这样,我在我的 dot.net 应用程序中使用基于 C 的 dll.有2个dll,一个是32位版本的MyDll32.dll,另一个是64位版本的MyDll64.dll. 有一个保存 DLL 文件名的静态变量:字符串 DLL_FILE_NAME. 它的使用方式如下: [DllImport(DLL_FILE_NAME, CallingConvention=CallingConven ..
发布时间:2021-11-26 14:36:39 C#/.NET

为什么(错误地)使用 ref myarray[0] 传递数组可以工作,但只能在 32 位应用程序中使用?

我曾在某个互操作(使用 DllImport)中做了一些愚蠢的事情,但它仍然可以在 32 位机器上运行. 在 64 位应用程序上有什么不同(以及为什么?)导致方法 1 的行为不同? 方法一(错误的方法): ref byte param//`DllImport`ed 函数的签名ref myarray[0]//调用函数时传入的参数 方法二(正确的方法): byte[] param//` ..
发布时间:2021-11-25 07:19:03 C#/.NET

C#:根据平台访问 32 位/64 位 DLL

我们使用来自 C# 应用程序的自行编写的 32 位 C++ DLL.现在我们注意到,当C#应用程序在64位系统上运行时,会自动使用64位运行时,当然64位运行时无法访问32位DLL. 我的问题是:有没有办法使用 32 位 DLL?如果没有,如果我创建了 64 位版本的 DLL,是否可以轻松地让应用程序选择 P/Invoke 到哪个? 我正在考虑在 C# 中创建两个帮助程序类:一个从 3 ..
发布时间:2021-11-25 06:23:45 C#/.NET

在 C# 中以编程方式设置 dllimport

我在我的解决方案中使用了 DllImport. 我的问题是我有同一个 DLL 的两个版本,一个是为 32 位构建的,另一个是为 64 位构建的. 它们都公开具有相同名称和相同签名的相同函数.我的问题是我必须使用两种静态方法来公开这些方法,然后在运行时使用 IntPtr 大小来确定要调用的正确方法. 私有静态类 Ccf_32{[DllImport(myDllName32)]公共静态外部 i ..
发布时间:2021-11-25 05:49:26 C#/.NET

如何使用 Visual Studio 2010 编译 64 位的 C DLL?

我有一个用 C 语言编写的 DLL 源代码.这是 General Polygon Clipper 的代码(以防万一感兴趣).我通过主页上提供的 C# 包装器在 C# 项目中使用它.它带有一个预编译的 DLL. 自从切换到装有 Visual Studio 2010 和 Windows 7 64 位的 64 位开发机器后,应用程序将不再运行.这是我得到的错误: 试图加载格式不正确的程序. ..
发布时间:2021-11-25 00:03:21 C#

CPU 架构独立 P/Invoke:DllName 或路径可以是“动态的"吗?

有没有办法让 P/Invoke (DllImport) 签名引用的特定 DLL 依赖于 CPU 架构? 我正在开发一个应用程序,该应用程序从第三方供应商的本机 dll 加载大量方法签名,在本例中是用户空间接口 DLL 到一块硬件.该供应商现在已经开始提供 x86 和 x64 版本的 DLL,我认为我的应用程序将受益于作为 64 位进程运行.除了这个 DLL,一切都是 .NET 代码,因此构建 ..
发布时间:2021-11-24 23:28:33 C#/.NET

在 C# DllImport 中使用 32 位或 64 位 dll

情况是这样,我在我的 dot.net 应用程序中使用基于 C 的 dll.有2个dll,一个是32位版本的MyDll32.dll,另一个是64位版本的MyDll64.dll. 有一个保存 DLL 文件名的静态变量:字符串 DLL_FILE_NAME. 它的使用方式如下: [DllImport(DLL_FILE_NAME, CallingConvention=CallingConven ..
发布时间:2021-11-24 23:24:56 C#/.NET