草庐IT

AppInit_DLL

全部标签

c++ - Boost 单元测试框架 dll 导出的 std::basic_ostringstream 导致 "already defined symbol"-error

我使用VisualStudio2012。我的设置是这样的:some.lib链接到some.exesome.lib链接到some_test.exe我在构建some_test.exe时使用BOOST_TEST_DYN_LINK。对于some.lib和test.exe使用BOOST_ALL_DYN_LINK结果是一样的。我已经使用/MD(多线程DLL)构建了some_test.exe、some.exe和some.lib。我已经使用runtime-link=shared构建了boost库。所有这些都是由VC11(VisualStudio2012)构建和链接的。问题是,在some.lib中,我想

c++ - 针对 dll/lib 的 cmake 链接

我的cmake的输出是一个静态库。我正在这样创建它:add_library(myMainLibSTATIC${BACKEND_SOURCES})当我尝试让myMainLib链接到第三方库/dll时出现问题。dll文件将在运行时找到,但是,我试图导入/链接lib文件,但没有成功。我的第三方库是SDL2和SDL2NET。我认为这很简单,并且已经用尽了我在网上找到的所有方法。都失败了。下面是我尝试过的列表。请告诉我我做错了什么。简单的方法,使用target_link_librariesadd_library(myMainLibSTATIC${BACKEND_SOURCES})target_l

c++ - DLL 和完全专用的模板类

环境:VisualStudio9,无托管扩展的C++。我有一个导出完全专用模板类的第三方库MyClass在MyClass.h中定义。它被编译成一个helperloader.lib和一个.dll文件。.lib文件包含此特化的编译代码和必要的符号。MyClass.h看起来像这样:templateclassMyClass{public:MyClass(){...};virtual~MyClass(){};}现在我想使用这个库。如果我在Client.cpp中包含MyClass.h然后编译它,我将在Client.obj文件中获得这些符号的第二个拷贝。我可以通过将该特化的所有成员定义为“外部”来摆

c++ - 在同一个进程中加载​​同一个 DLL 的 2 个版本

我想完全按照描述的那样做here,但公认的解决方案对我不起作用。我想原因已经解释过了here:IfaDLLwithdependenciesisloadedbyspecifyingafullpath,thesystemsearchesfortheDLL'sdependentDLLsasiftheywereloadedwithjusttheirmodulenames.IfaDLLwiththesamemodulenameisalreadyloadedinmemory,thesystemchecksonlyforredirectionandamanifestbeforeresolvingto

同一解决方案中的 C#/C++ - DllImport 未找到 DLL

我有一个包含C++dll项目和使用它的C#项目的解决方案。问题是c++项目的构建路径在解决方案文件夹中,而c#在项目的bin文件夹中(每个嵌套有debug/release),所以DllImport找不到它们。有解决此问题的标准方法吗? 最佳答案 您应该这样做的方式是将两个项目的构建路径设置为相同的“bin”目录...最好是一个用于解决方案的路径,而不是一个项目。然后只需将所有项目构建到该文件夹​​即可。您可以从项目设置中更改它。另一种技术是对C++应用程序使用构建后步骤,将DLL复制到C#项目的文件夹。这样你实际上不会改变任何路径。

C# 调用 C++ DLL 传递指针到指针参数

你们能帮我解决以下问题吗?我有一个C++函数dll,它将被另一个C#应用程序调用。我需要的功能之一如下:structDataStruct{unsignedchar*data;intlen;};DLLAPIintAPI_ReadFile(constwchar_t*filename,DataStruct**outData);我用C#编写了以下代码:classCS_DataStruct{publicbyte[]data;publicintlen;}[DllImport("ReadFile.dll",CallingConvention=CallingConvention.Cdecl,CharS

c++ - Delphi:使用调试器调用 C dll 函数需要 15 秒,没有调试器需要 0.16 秒。为什么?

我有以下设置:用DelphiXE5编写并内置Debug64位的Delphi命令行应用程序。用MicrosoftVisualStudio2013编写并内置64位版本的Cdll。Delphi命令行应用程序调用Cdll中的函数。意外情况:在DelphiXE5IDE中调试Delphi命令行应用程序时,Cdll函数调用需要15秒。当直接启动相同的Delphi命令行应用程序(没有IDE,没有调试器)时,Cdll函数调用需要0.16秒。Delphi命令行应用程序源代码:programDelphiCpplibraryCall;{$APPTYPECONSOLE}{$R*.res}usesSystem.S

c# - 将 C# 字符串传递给 Windows Mobile 中的非托管 C DLL

我有一个非托管C++DLL,我需要从WindowsMobileC#应用程序调用它。我有C#包装器,它在桌面上运行良好。我可以从C#桌面程序调用DLL函数并毫无问题地传递字符串。但是,当我为移动平台编译库和包装器时,我在DllImport行中收到一个错误,指出CharSet.ANSI无法识别。允许我编写的唯一选项是CharSet.Auto和CharSet.Unicode。问题是,不管这个设置如何,在c++函数中接收到的字符串都是宽字符字符串,而不是他们所期望的普通char*字符串。我们可以使用wcstombs()来翻译每个c++函数开头的所有字符串,但我宁愿不要将lib修改到这样的程度.

c++ - 通过 COM 在 64 位进程中使用 32 位 DLL

所以前段时间我正在调查一个我知道很快就会出现的问题。我们有一个链接到某个库的32位版本的DLL。这个库没有x64版本可供我们使用,我们也没有关于替换它的实用选项。当我进行初步调查时,我发现了一两篇文章描述了64位进程可以通过COM“服务器”使用32位DLL(Windows)的方法。不幸的是,我丢失了我保存的链接,现在我已经搜索了一个多小时,但没有成功。这里有人熟悉我描述的过程吗?我这辈子都记不起我是用哪种魔法咒语在搜索中找到了正确的结果,当然,现在是实现时间了。提前感谢你们提供的任何帮助,同时我会继续搜索。 最佳答案 这可能还不够,

c++ - 视觉口齿不清 : how to call functions in external C++ DLL

我有一个我编写的C++dll(native,而不是.net),我想使用VisualLisp的功能。任何人都可以指出如何执行此操作的示例,或者至少要阅读哪部分文档吗? 最佳答案 我通过为我的dll编写一个activex/COM包装器解决了这个问题,我认为这应该使将来更容易链接。在theswamp上开始一个线程从好人那里得到了一些关于如何从VisualLisp调用COM的答案。作为记录,它看起来像这样://inc++...(headerandIDLfilealsoneeded)hresulttimestwo(doublein,doubl