草庐IT

DLL_EXPORT

全部标签

c# - 一个解决方案中的非托管 DLL 项目和托管 WinForms 应用程序

我使用的是VisualStudio2008Professional,我需要创建包含两个项目的解决方案。第一个项目是托管WinFormsC#项目,第二个是非托管DLLC++项目。我在VS2008中创建了它们,在非托管DLL项目中我导出了返回一些int的简单函数。在托管WinForms项目中,我以通常的方式导入DLL并尝试在标签中打印返回值:[DllImport("DllProj.dll",EntryPoint="GetSomeInt",SetLastError=true)]privatestaticexternintGetSomeInt();但是当我构建解决方案并运行时,我得到了DllN

c++ - 如何找出我的 DLL 增长如此之多的原因

我一直在处理的一个DLL最近变大了很多。是否有任何工具可以告诉我对此负责的是什么?例如,它是实例化次数过多的模板,还是第3方库,或者是boost?我正在寻找一种关注大小而不是性能的分析器。 最佳答案 您是在谈论DLL的字节大小吗?尝试使用dumpbin实用程序。这可以向您显示DLL中的内容。/ARCHIVEMEMBERS应该向您展示各个对象模块。http://support.microsoft.com/kb/177429 关于c++-如何找出我的DLL增长如此之多的原因,我们在Stack

c++ - 如何导出类函数,而不是 DLL 中的整个类

我开发了一个Win32DLL,在下面提供了详细信息,并想为函数Connnect和LogOut创建一个CLI/C++包装器。我知道可以从DLL导出整个类和函数。classCClientLib{public:CClientLib(void);//TODO:addyourmethodshere.__declspec(dllexport)boolConnect(char*strAccountUID,char*strAccountPWD);__declspec(dllexport)voidLogOut();private:Account::RefUserAccount;voidset_Activ

c++ - 为什么 Windows 10 中 kernel32.dll 上的 GetFileVersionInfo 返回版本 6.2?

我正在尝试检索kernel32.dll版本以执行Windows版本检查。然而,出于某种原因,即使kernel32.dll的版本(如文件属性中所示)为10.0.10586.0,返回的版本为:6.2.10586.0怎么会呢?DWORDdwDummy;DWORDdwFVISize=GetFileVersionInfoSize(lpszFilePath,&dwDummy);LPBYTElpVersionInfo=newBYTE[dwFVISize];if(GetFileVersionInfo(lpszFilePath,0,dwFVISize,lpVersionInfo)==0){returnF

c++ - 是否有真正的 64 位版本的 msvcr80.dll?如果不是,为什么不呢?

我已阅读链接,该链接回答了是否有64位版本的VisualStudios(VisualStudio64bit?)的问题。简单的答案是否,但32位VisualStudio开发环境可以生成64位可执行文件。问题:1)是否有64位版本的Microsoft可再发行库msvcr80.dll?我已经在我的Windows764位机器上安装了可再发行组件包,并且在winsxs子目录中找到的所有拷贝(总共7个)在它们的标题部分中表明它们是32位的。2)这不是真的吗:a)32位可执行文件无法加载64位dll?b)64位可执行文件无法加载32位dll?c)如果msvcr80.dll的所有版本都是真实的)32位

c++ - 为什么从 DLL 内部分配的内存在 FreeLibrary() 之后变得无效?

我今天遇到了这个错误,原来是因为我在调用FreeLibrary()后使用了一个字符串从我的DLL中分配。这是一个重现崩溃的简单示例。这进入DLL:voiddllFunc(char**output){*output=strdup("Hello");//strdupusesmalloc}这是在加载DLL的EXE中:voidexeFunc(){char*output;dllFunc(&output);std::strings1=output;//Thissucceeds.FreeLibrary(dll);std::strings2=output;//Thiscrasheswithaccess

c++ - Win32。在 dll 中启用视觉样式

我没有C++和WinAPI方面的经验,如果这个问题是新问题,我很抱歉。我有DLL,我可以在其中创建一些组件,例如MessageBox。我添加了pragma注释以启用视觉样式,但它不起作用(我从这个答案中知道它不应该:windows7styleforcomboboxoninternetexplorertoolbar,how?Dll代码(省略export等):#include"stdafx.h"#include"my-dll.h"#include#pragmacomment(linker,"\"/manifestdependency:type='win32'name='Microsoft.

c# - 从 c# 调用的 c++ dll 导出函数返回字符串

我正在尝试从C++dll导出函数返回一个字符串。我从c#调用这个函数。我在互联网上看到了很多例子,我真的很困惑该怎么做。我的导出函数的C++代码:extern"C"__declspec(dllexport)char*__cdeclgetDataFromTable(char*tableName){std::stringst=getDataTableWise(statementObject,columnIndex);printf(st.c_str());char*cstr=newchar[st.length()+1];strcpy(cstr,st.c_str());returncstr;}

c++ - native VC++ 使用外部(非项目)dll 引用如何指定 dll 的路径

我有一个使用dll的nativeVC++项目(不在项目中)。现在,我必须将dll放在“Windows用于查找DLL的搜索路径”中link但我不希望dll位于可执行目录或当前目录或windows或系统目录中。所以我唯一的选择是将路径添加到%PATH%环境变量。还有其他办法吗?是否有一种优雅的方式(添加到PATH)?我应该在安装时这样做吗?如果我这样做,我应该担心吗? 最佳答案 总结我发现的所有技术:如果您使用托管项目作为启动项目(这实际上是我的情况)使用环境类stringtemp="myFullDirectoryPathToDll";

c++ - 当不再有对象引用时,COM 会自动卸载 DLL 吗?

例如,在X语言中:letx=CreateOject("MyProgID")x.LateBoundCall()x.Release()//(orsettingxtoNothinginVB-likelanguage,etc)MyProgID所在的DLL会怎样?COM会自动卸载DLL吗?编辑这是假设上面的代码在一个不暴露任何COM的可执行文件中。 最佳答案 是的,但不是以一种确定性的方式。Windows定期询问每个加载的DLL“isitsafetounloadyounow?”任何响应"is"的DLL均已卸载。注意一个remarkfromMS