Tag: dll

在C中创建有效的共享库

我正在做一些测试来学习如何创建共享库。 Code :: Blocks中共享库的模板就是这个 LIBRARY.C // The functions contained in this file are pretty dummy // and are included only as a placeholder. Nevertheless, // they *will* get included in the shared library if you // don’t remove them 🙂 // // Obviously, you ‘ll have to write yourself the super-duper // functions to include […]

Visual Studio – 添加netCDF库

我想在Windows 64bit上使用Visual Studio Express 2013在C项目中使用netCDF格式。 我从官方网站下载了安装文件并执行了.exe。 然后,我查看了这篇文章 ,看看我应该如何进行链接等。更具体地说,在我的Visual Studio项目中,我做了以下内容: 把#include 在VC ++目录,库目录中,我添加了C:\ Program Files(x86)\ netCDF 4.3.3.1 \ lib; C:\ Program Files(x86)\ netCDF 4.3.3.1 \ bin; 在VC ++目录中,包含目录,我添加了C:\ Program Files(x86)\ netCDF 4.3.3.1 \ include; C:\ Program Files(x86)\ netCDF 4.3.3.1 \ bin; 在链接器>输入>附加依赖项中,我添加了netcdf.lib(以及我在netCDF 4.3.3.1的\ lib文件夹中找到的所有其他.lib文件) 在Windows \ System32和Windows \ SysWOW64中放置netCDF 4.3.3.1的\ bin文件夹的所有.dll文件 但是,当我运行项目(F5)时,它会给出以下2个错误: 错误LNK2019:函数_main中引用了未解析的外部symbol_nc_strerror 错误LNK1120:1未解析的外部 – >我认为,由于第一个错误。 […]

C程序中的C ++ dll

我想用C ++代码创建一个dll库,并在C程序中使用它。 我只想导出一个函数: GLboolean load_obj (const char *filename, GLuint &object_list); 来自库的头文件: #ifndef __OBJ__H__ #define __OBJ__H__ #include #include #include #include #include #if defined DLL_EXPORT #define DECLDIR __declspec(dllexport) #else #define DECLDIR __declspec(dllimport) #endif extern “C” GLboolean load_obj (const char *filename, GLuint &object_list); #endif // __3DS__H__ 在.cpp(在库项目中)函数也声明为: extern “C” GLboolean load_obj (const char *filename, GLuint &object_list) { code… […]

ctypes – 将带有指针的结构传递给另一个结构

在我的C代码中我有: typedef struct{ int info1; int info2; MoreData* md; } BasicData; typedef struct{ int extinfo[100]; char stuff[100]; } MoreData; 现在我有一个C库函数,它将BasicData作为参数,我想从Python调用它。 为此,我构建了一个ctypes类: class BasicData(Structure): _fields_ = [(“info1”, c_int), (“info2”, c_int), (“md”, ??????)] 我的问题是我要填写什么? 空间能够将此结构传递给C函数(或者我需要一些完全不同的东西?)。 MoreData只是在计算过程中使用,我不需要在我的Python代码中读取它,因此为它分配内存将从C库级别处理。 我只需要传递一个具有正确指针类型的BasicData结构。

OpenCL C / C ++动态绑定库(win32及更多)

我正在尝试使用OpenCL,为了将其投入生产,我希望能够动态绑定到OpenCL.DLL(在Windows下),以便在没有OpenCL的情况下“优雅地”处理安装在主机上。 是否有任何可用的库(或代码片段)在C或C ++中处理这种动态绑定,就像GLEW对OpenGL一样? 我想避免自己做这件事的麻烦。 谢谢,

在c ++项目中放置以及如何包含dll文件的位置?

我阅读本指南 ,向您介绍使用Cairo和Visual C ++创建“可视化”应用程序所需的步骤。 本指南建议您下载某些dll文件并将它们存储在创建可执行文件的目录中(调试)。 以下是Nil在他的教程中引用的文件列表: cairo Binaries(是的,你也需要二进制包,因为Dev一个不包含DLL) – > libcairo-2.dll zlib二进制文件 – > zlib1.dll libpng Binaries – > libpng12-0.dll Freetype二进制文件 – > freetype6.dll FontConfig二进制文件 – > libfontconfig-1.dll expat二进制文件 – > libexpat-1.dll 正如你所看到的,它是相当多的文件。 我一直想知道这是否是“正确”的做法? 在这种情况下,是否存在被视为“最佳实践”的替代方式?

用Delphi消费C dll

我有一个带有此签名的Dll函数: UInt32 Authenticate(uint8 *Key); 我在Delphi上这样做: function Authenticate(Key:string) : UInt32; external ‘mylib.dll’ name ‘Authenticate’; 但总是,函数返回10(错误代码)和应用程序刹车: 有办法做到这一点吗? 更新: 谢谢你们! 你是最好的!

创建DLL以在两个进程之间共享内存

我需要使用DLL的function类似于Linux共享内存。 我的Windows编程经验很少,但我认为可以实现我的目标。 我想要类似下面的内容: DLL int x; void write(int temp) { x = temp } int read() { return x; } 过程1: LoadDLL(); write(5); //int x = 5 now 过程2: LoadDLL(); printf(read()); //prints 5 since int x = 5 from Proccess 1 当然,这个例子忽略了竞争条件等,但有一种简单的方法可以解决这样的问题吗? 我将使用Microsoft Visual Studio 10来创建DLL。 有人可以解释我怎么写这么简单的东西并将其构建成一个可以加载和调用的DLL类似于上面的伪代码? 编辑 :无法使用共享内存段和内存映射文件,因为我创建的进程在LabVIEW和Lua中不支持上述内容。 但是,它们确实支持DLL,这就是我需要这种“过时”方法的原因。

Delphi和C / C ++ DLL Struct vs.Record

我之前问了一个关于delphi和C / C ++ DLL的问题。 我现在有另一个关于记录/结构的问题。 DLL应该能够动态地从MainAPP更改指针变量的VALUE。 我的delphi MAINAPP有以下记录: type MyRec = record MyInteger : Pointer; MyWideString : pwidechar; MyString : pchar; MyBool : Pointer end; type TMyFunc = function ( p : pointer ): pointer; stdcall; procedure test; var MyFunction : TMyFunc; TheRecord : MyRec; AnInteger : Integer; AWideString : WideString; AString : String; […]

如何从Delphi中生成的DLL导入函数?

你能告诉我如何在我的C程序中使用以下function吗? Delphi DLL – 导出的函数: function GetCPUID (CpuCore: byte): ShortString; stdcall; function GetPartitionID(Partition : PChar): ShortString; stdcall; 我没有该DLL的源代码,所以我必须使我的C程序适应该DLL,而不是相反。 我执行以下操作并得到错误 typedef char* (_stdcall *GETCPUID)(BYTE); typedef char* (_stdcall *GETPID)(PCHAR); GETCPUID pGetSerial; GETPID pGetPID HMODULE hWtsLib = LoadLibrary(“HardwareIDExtractor.dll”); if (hWtsLib){ pGetSerial = (GETCPUID)GetProcAddress(hWtsLib, “GetCPUID”); char *str = (char*) malloc(1024); str = pGetSerial((BYTE)”1″); pGetPID= (GETPID )GetProcAddress(hWtsLib, “GetPartitionID”); char *str1 […]