dllimport相关内容
我在 VS 2008 中有一个解决方案,其中包含 2 个项目.一个是用 C++ 编写的 DLL,另一个是从空白项目创建的简单 C++ 控制台应用程序.我想知道如何从应用程序调用 DLL 中的函数. 假设我从一个空白的 C++ 项目开始,我想调用一个名为 int IndependentFunction(int someParam) 的函数 我怎么称呼它? 解决方案 有很多方法可以做
..
我正在使用一个结构体来传递给一个非托管的 DLL - [StructLayout(LayoutKind.Sequential)]公共结构 valTable{公共字节类型;公共字节映射;公共字节备用1;公共字节备用2;public int par;公共国际分钟;公共字节[]名称;公共 valTable(){名称 = 新字节 [24];}} 上面的代码将无法编译,因为 VS 2005 会抱怨“结构
..
对于我为 g++ 编写的项目,我在 MSVC 中遇到了链接问题.问题来了: 我将 libssh 作为静态库构建为我的应用程序的一部分,在 cmake 中添加目标 add_library(ssh_static 静态 $libssh_SRCS) Libssh 使用 C 语言,所以我在我的 C++ 源代码中使用了 'extern "C" {...}' 来包装包含.然后我使用 将 ss
..
切换到 VS2010 后,托管调试助手显示有关从 C# 应用程序调用非托管 C++ 函数导致堆栈不平衡的错误. 通常的嫌疑人似乎不是导致问题的原因.还有什么我应该检查的吗?VS2008 构建的 C++ dll 和 C# 应用程序从来没有出现过问题,没有奇怪或神秘的错误 - 是的,我知道这没有多大意义. 以下是检查的内容: dll 名称正确. 入口点名称是正确的,并且已经使用de
..
我可以将类放入 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
..
我主要是一名 PHP 开发人员,但我有一些我们以前的开发人员制作的旧 ASP 坏了,我不知道如何修复它.我们有一个程序将一些变量发送到侦听器页面,该页面将这些数据与 msSQL 数据库中的注册代码进行比较,然后让程序知道注册代码是否有效. 我收到以下错误 .Parameters.Append .CreateParameter(“@code", adVarChar, 1, 50, x) 是
..
我在尝试将数据编组到我的 DLL 函数并返回到 C# 代码时遇到这个奇怪的错误.我没有看到我在哪里传递空值或读取无效内存,而且这个错误非常模糊.有什么线索吗?? 代码如下: FeeCalculation 函数在 DLL 中导出如下: extern "C" __declspec(dllexport) void __stdcall FeeCalculation(char *cin,cha
..
在我的程序 (C#) 中,我使用 Marshal.PtrToStructure 方法将对象转换为循环中的结构体添加内存地址.在第一个元素,这个工作正常.但是在第二个元素处,发生了访问冲突异常. 访问冲突异常只发生在win 7(64位)上,win xp(32位)上不会发生. 我不知道原因和解决方案. 请帮帮我. 注意:我使用 .NET Framework 3.5. 代码
..
有没有办法让 P/Invoke (DllImport) 签名引用的特定 DLL 依赖于 CPU 架构? 我正在开发一个应用程序,该应用程序从第三方供应商的本机 dll 加载大量方法签名,在本例中是用户空间接口 DLL 到一块硬件.该供应商现在已经开始提供 x86 和 x64 版本的 DLL,我认为我的应用程序将受益于作为 64 位进程运行.除了这个 DLL,一切都是 .NET 代码,因此构建
..
情况是这样,我在我的 dot.net 应用程序中使用基于 C 的 dll.有2个dll,一个是32位版本的MyDll32.dll,另一个是64位版本的MyDll64.dll. 有一个保存 DLL 文件名的静态变量:字符串 DLL_FILE_NAME. 它的使用方式如下: [DllImport(DLL_FILE_NAME, CallingConvention=CallingConven
..
我有一个 32 位的 DLL (FreeType)(头文件:IMAGE_FILE_MACHINE_I386). 我想从 C# 代码中使用它,使用 DllImport. 我的应用程序的目标是 x86,IntPtr.Size 是 4,进程是 32 位. 但是我得到了 BadImageFormatException(来自 HRESULT 的异常:0x8007000B).有什么问题?
..
我们的解决方案最近从 .NET Framework v3.5 升级到 v4.5.2,因此我们在 Windows Server 2012 64 位机器上运行时出现了一些溢出错误. 这些溢出错误似乎来自我们从 Windows API 调用此函数的任何实例: [DllImport("user32.dll", CharSet=CharSet.Auto)]公共静态外部 IntPtr SendMess
..
我曾在某个互操作(使用 DllImport)中做了一些愚蠢的事情,但它仍然可以在 32 位机器上运行. 在 64 位应用程序上有什么不同(以及为什么?)导致方法 1 的行为不同? 方法一(错误的方法): ref byte param//`DllImport`ed 函数的签名ref myarray[0]//调用函数时传入的参数 方法二(正确的方法): byte[] param//`
..
我们使用来自 C# 应用程序的自行编写的 32 位 C++ DLL.现在我们注意到,当C#应用程序在64位系统上运行时,会自动使用64位运行时,当然64位运行时无法访问32位DLL. 我的问题是:有没有办法使用 32 位 DLL?如果没有,如果我创建了 64 位版本的 DLL,是否可以轻松地让应用程序选择 P/Invoke 到哪个? 我正在考虑在 C# 中创建两个帮助程序类:一个从 3
..
我在我的解决方案中使用了 DllImport. 我的问题是我有同一个 DLL 的两个版本,一个是为 32 位构建的,另一个是为 64 位构建的. 它们都公开具有相同名称和相同签名的相同函数.我的问题是我必须使用两种静态方法来公开这些方法,然后在运行时使用 IntPtr 大小来确定要调用的正确方法. 私有静态类 Ccf_32{[DllImport(myDllName32)]公共静态外部 i
..
我有一个用 C 语言编写的 DLL 源代码.这是 General Polygon Clipper 的代码(以防万一感兴趣).我通过主页上提供的 C# 包装器在 C# 项目中使用它.它带有一个预编译的 DLL. 自从切换到装有 Visual Studio 2010 和 Windows 7 64 位的 64 位开发机器后,应用程序将不再运行.这是我得到的错误: 试图加载格式不正确的程序.
..
我必须在我的应用程序中使用第三方 DLL.DLL 是 32 位的,我使用的系统是 64 位操作系统. 我已经在我的 DotNet 应用程序 (framework-4.5) 中导入了 32 位 DLL,如下所示 [DllImport("Sample.dll",入口点 = "添加",CharSet = CharSet.Ansi,CallingConvention = CallingConve
..
有没有办法让 P/Invoke (DllImport) 签名引用的特定 DLL 依赖于 CPU 架构? 我正在开发一个应用程序,该应用程序从第三方供应商的本机 dll 加载大量方法签名,在本例中是用户空间接口 DLL 到一块硬件.该供应商现在已经开始提供 x86 和 x64 版本的 DLL,我认为我的应用程序将受益于作为 64 位进程运行.除了这个 DLL,一切都是 .NET 代码,因此构建
..
情况是这样,我在我的 dot.net 应用程序中使用基于 C 的 dll.有2个dll,一个是32位版本的MyDll32.dll,另一个是64位版本的MyDll64.dll. 有一个保存 DLL 文件名的静态变量:字符串 DLL_FILE_NAME. 它的使用方式如下: [DllImport(DLL_FILE_NAME, CallingConvention=CallingConven
..
我有一个 32 位的 DLL (FreeType)(头文件:IMAGE_FILE_MACHINE_I386). 我想从 C# 代码中使用它,使用 DllImport. 我的应用程序的目标是 x86,IntPtr.Size 是 4,进程是 32 位. 但是我得到了 BadImageFormatException(来自 HRESULT 的异常:0x8007000B).有什么问题?
..