Tag: dll

libsndfile Windows 7

我正在尝试使用MinGW在Windows 7机器上用C编译程序。 现在我不得不承认我开始时没有很多C经验,而且由于不是一个非常熟练的Windows用户而更加复杂。 该程序带有一个make文件,但它因为我收到错误而卡住了: 找不到-lsndfile 我发现sndfile是一个用于读取.wav文件等的声音库。 我从http://www.mega-nerd.com/libsndfile下载了该库,并运行了它附带的安装程序可执行文件。 这将一些头文件和其他垃圾放在C盘上的Programs文件夹中。 我将头文件复制到MinGW目录下的include文件夹中,这将大量早期错误减少到上面看到的错误。 我想我需要在某处放一个.dll文件,但不知道在哪里。 如果需要,我可以提供更多细节,因为我不太清楚问题出在哪里。 谢谢您的帮助。

HarfBuzz – hb_shape()会导致访问冲突

基于此示例 ,我尝试在SDL应用程序中实现字体呈现。 调用hb_shape()时 ,应用程序因访问冲突而暂停。 DLL-download-link(win32): 这里 {harfbuzz-0.9.26-win32.zip} ErrorMsg(VC2012):ConsoleApplication2.exe中0x6160B7F0(libharfbuzz-0.dll)处的未处理exception:0xC0000005:读取位置0x00000068时发生访问冲突 编辑:为简单起见,我将示例更改为控制台应用程序。 Edit2:现在静态链接,用VC ++的LIB.exe创建.lib文件。 #include #include #include #include #pragma comment(lib,”lib/x86/freetype253ST.lib”) // freetype single-thread #pragma comment (lib,”libharfbuzz-0.lib”) // linked to libharfbuzz.dll, created by LIB.exe int main() { hb_font_t* font = NULL; hb_buffer_t* buffer = NULL; FT_Library flib; FT_Face face; bool found = false; const char text[] = {“Write something….”}; […]

CustomAction在开发计算机上成功,在部署计算机上失败

我正在创建一个WiX安装程序来安装连接到数据库的程序。 为了解决这个问题,我创建了一个C dll来检查服务器上是否存在某个SQL实例: extern “C” UINT __stdcall DBConTest(MSIHANDLE hInstaller) { FILE *fp; fp = fopen(“dbcontestdll.txt”, “w”); _ConnectionPtr pCon; int iErrCode; HRESULT hr; UINT rc; //init COM fwprintf(fp, L”entering dbcontest\n”); if(FAILED(hr = CoInitializeEx(NULL,tagCOINIT::COINIT_APARTMENTTHREADED))) return ERROR_INVALID_DATA; fwprintf(fp,L”did coinit\n”); if(FAILED(hr = pCon.CreateInstance(__uuidof(Connection)))) return ERROR_INVALID_DATA; fwprintf(fp,L”created instance of connection\n”); TCHAR constr[1024]; DWORD constrlen = sizeof(constr); rc=MsiGetProperty(hInstaller,TEXT(“DBCONNECTIONSTRING”), constr, &constrlen); fwprintf(fp, […]

MASM:从程序集访问全局C变量

我正在编写一个程序来转换图像并比较C和汇编中处理数据的速度。 我有3个项目: C的主要项目 C中的DLL转换图像 ASM中的DLL转换图像 在C DLL头文件中,我只是写道: #ifdef PROJEKTC_EXPORTS #define PROJEKTC_API __declspec(dllexport) #else #define PROJEKTC_API __declspec(dllimport) #endif … extern PROJEKTC_API unsigned int ThreadID; PROJEKTC_API void __cdecl funkcjaC(void* Args); 包含此标题后,我可以在主项目和C DLL中访问变量ThreadID。 当我尝试在ASM中执行相同操作时,问题就开始了。 我在extern ASMThreadID:dword块中尝试过像extern ASMThreadID:dword这样的构造,但它不起作用。 我得到的错误: error LNK2019: unresolved external symbol _ASMThreadID referenced in function _MyProc1 我觉得这是1-2行代码的问题,但我无法弄清楚应该使用哪条指令。 我通过ASM中的模块定义文件链接项目,并将ASM.lib文件添加到主项目的链接器 – >输入中。 你有什么建议吗?

VB.Net使用C DLL

将用C编写的DLL放入VB.NET(Express Edition 2010)项目的最佳方法是什么? 我现在有外部函数的声明来定位绝对路径,如下所示: C:\ Users \ Kyle \ Documents \ Pelles C Projects \ ROBOLIB \ ROBOLIB.dll 因为Visual Basic创建了许多不同的目录,所以程序可以从(Debug,Release,Publish)运行。 有什么办法可以告诉VB.NET将一些文件放到程序的目录中吗? 或者我应该以某种方式自定义安装程序,以便将我需要的DLL放在特定位置?

我可以在R中加载第三方.dll吗?

我正在运行Windows 7,我知道DLL是使用Visual Studio C ++ 2010构建的。由于我没有源代码,因此在创建包(NAMESPACE)时无法在R中即时构建它。 在这个阶段,我不需要创建一个包 ,我只想使用dyn.load()在R中加载库。 因为它是一个DLL我认为它可以移植到任何客户端程序,但我只是确保,因为我知道它不是使用GNU gcc 。 编辑: 我想调用dll部署的所有函数。

Ruby – 将方法作为回调传递给DLL库

假设我有一个带有此函数的C / C ++库,编译为DLL: #include extern “C” __declspec(dllexport) void __stdcall myFunction(void (*myCallback)(int)) { int result = MessageBox( 0, (LPCWSTR)L”Press yes or no”, (LPCWSTR)L”Test”, MB_YESNO ); myCallback(result); } 它只是打开标准的Win32消息框并将结果传递给回调函数。 问题是:是否可以在Ruby中使用此函数,通过Fiddle或类似的东西,并以某种方式将Ruby方法传递给它,以便从C ++代码中调用它? 这是我用来将DLL库导入Ruby的代码: require “fiddle” myLibrary = Fiddle.dlopen(“myLibrary.dll”) myFunction = Fiddle::Function.new( myLibrary[“myFunction”], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOID ) def myCallback(value) puts “MessageBox result is #{value}” end 这显然不起作用: myFunction.call(method(:myCallback)) 它只是抛出一个TypeError – […]

C#中的封送C数组

可能重复: 在c#中编组c结构 实际C结构: typedef struct procedure { char code[8]; }procedure; typedef struct p45_cldxed24 { procedure p45_cldxed[8]; }p45_cldxed24; p45_cldxed24的等效C#结构是什么? 具体来说,你将如何编组arrays? 检查一下 它是否正确? [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] struct p45_cldxed24 { [MarshalAsAttribute(UnmanagedType.LPArray, ArraySubType=UnmanagedType.Struct,SizeConst = 8,SizeParamIndex=0)] procedure[] p45_cldxed; }

要在C程序中使用的C ++ DLL

我有一个DLL的源代码是用C ++编写的。 我想创建该库的静态版本,我希望能够在另一个用纯C编写的库中链接这个静态库。编译器是Windows上的MinGW。 我应该如何编译第一个C ++静态库,以便它可以被C库使用?

链接共享dll库cmake clion项目

我目前在Clion上有两个C项目和cmake。 其中一个项目名为“sharedLibsDemo”,我正在尝试在此项目中创建一个共享库。 在另一个项目中,我想使用由“共享”项目创建的库。 目前,在“sharedLibsDemo”项目中,我有以下cmake: cmake_minimum_required(VERSION 3.7) project(sharedLibsDemo) set(CMAKE_C_STANDARD 11) INCLUDE_DIRECTORIES(“${CMAKE_CURRENT_BINARY_DIR}”) set(SOURCE_FILES shared.c shared.h main.c) add_library(shared SHARED ${SOURCE_FILES}) include(GenerateExportHeader) GENERATE_EXPORT_HEADER(shared # generates the export header shared_EXPORTS.h automatically BASE_NAME shared EXPORT_MACRO_NAME SHARED_EXPORTS EXPORT_FILE_NAME shared_EXPORTS.h STATIC_DEFINE SHARED_EXPORTS_BUILT_AS_STATIC) set(EXEC_FILES main.c) add_executable(myexe ${EXEC_FILES}) target_link_libraries(myexe shared) 但是,此cmake仅创建shared_EXPORTS .h,libshared.dll和libshared.dll.a`文件。 我设法使用Mingw本身创建.lib文件,并将所有这些文件(包括源代码的.h文件)放入一个文件夹中,并将该文件夹放在第二个项目的根文件夹中以便使用它。 但是,我到处寻找一种方法将库链接到第二个项目的可执行文件。 cmake本身的文档假设我有一些我不知道的知识。 是否有任何命令列表可用于最终链接我的库。 我已经尝试过“使用find_package()或target_link_libraries”的通用答案无济于事。 编辑1 以下是shared.h的内容: #include “shared_EXPORTS.h” #ifndef SHAREDLIBSDEMO_LIBRARY_H #define SHAREDLIBSDEMO_LIBRARY_H […]