草庐IT

DLL_THREAD_ATTACH

全部标签

c++ - 在 Visual Studio 中链接 DLL

我在WindowsXP上使用VisualStudioC++2005。我已经使用VisualStudioC++2005创建了一个DLL共享库。但是,我不确定如何链接它。通常我刚刚创建了静态库(*.lib)。我链接的方式是否与链接库时的方式相同。通过使用属性C/C++和链接器常规属性并选择header和库路径的路径?非常感谢您的任何建议。 最佳答案 当您创建DLL时,应该创建一个用于动态链接的.lib文件。您可以像使用静态.lib文件一样使用它们。 关于c++-在VisualStudio中链

c# - 在非托管 c++ dll 中使用托管 c# dll

非托管C++.dll如何知道托管C#.dll的位置?一些背景:我有一个导入类型库(.tlb)的c++.dll,在其中一个c++函数中,我实例化了一个指向c#.dll中函数的指针。然后,使用该指针,我可以在C++中调用C#函数。我想知道c++.dll是如何知道c#.dll在哪里的?此外,是否有更好的方法来进行此类编码?.tlb是否需要与c#.dll位于同一目录中? 最佳答案 完成上述任务的一种方法是使用regasm命令向MicrosoftWindows注册表注册C#dll文件。此命令EXE包含在VisualStudios的发行版中。命

c++ - DLL缓存问题

从尽可能高的性能角度来看,static与dynamic库链接选项是否也会因为DLL的缓存未命中率较高而对性能产生影响?我的想法是,当库被静态链接时,整个程序被加载到一个地方或附近。但是当动态链接时,DLL可以加载到某处并且它的变量可以分配“太远”。这是真的,还是说DLL在缓存未命中率方面没有性能损失?(仅限快速C/C++代码) 最佳答案 “整个程序加载到一个地方”:你的系统的内存管理器仍然会根据自己的喜好将可执行内存页映射到物理内存上——你无法控制它。在运行时,如果需要可执行代码的其他部分,物理页面将换出到磁盘。当多个进程实际上可以

c++ - 如何使用 visual studio 编译 c++ dll?

我有一些要编译成dll文件的C++类。当我尝试编译项目时,收到未解析的外部符号错误:errorLNK2019:unresolvedsymbol_WinMain@16referencedinfunctiontmainCRTStartupfatalerrorLNK1120:1unresolvedexternal这是我到目前为止所做的:我刚刚创建了一个新的win32项目,选择了dll和空项目。然后我把所有的h和cpp文件复制到目录下,添加到项目中。此外,我添加了一个包含以下代码的文件“DllMain.cpp”:#includeBOOLAPIENTRYDllMain(HANDLEhModule

c# - 将 cout 从 C++ dll 重定向到 C# 中的文本框

我正在尝试将dll中方法的控制台输出(cout)显示到C#程序中的文本框。每次调用该方法时,控制台输出都会显示在VisualStudio的输出Pane中。有没有办法将输出Pane的内容重定向到文本框?dll是由其他人用C++编写的,我无法更改它。该dll使用SWIG包装,以便我的C#代码可以调用它。 最佳答案 在点击David建议的链接后,我决定针对您的问题编写一个更具体的解决方案。此版本允许您通过BackgroundWorkerPropertyChangedEventHandler回调在GUI中接收标准输出。这是ConsoleRe

c++ - 在没有函数修饰的情况下导出 dll 中的类

我想知道如何去除我需要在dll中导出的类函数周围的装饰。例如,当你有这样的事情时:extern"C"{__declspec(dllexport)int__cdeclgetWhatever();}并且您使用导出的函数名称dependencyWalker进行验证,您将拥有完全相同的函数名称。但是如果你对一个类做类似的事情,就会有一堆像这样装饰函数的字符:extern"C"{class__declspec(dllexport)Toto{__cdeclToto(){}__cdecl~Toto(){}int__cdeclgetBlob(floaty){return(int)y;}};}在depe

c# - 无法在 DLL 中找到入口点

我有一个C#应用程序,我试图从中向C++函数发送参数。但是,我收到错误(在主题中提到)C#应用程序:staticclassSegmentationFunctions{[DllImport("MyApplication.dll",EntryPoint="fnmain",CallingConvention=CallingConvention.Cdecl,CharSet=CharSet.Ansi)]publicstaticexternintfnmain(stringsearch);}}publicpartialclassMainWindow:Window{publicMainWindow()

c++ - 是否可以验证 WinRT 组件 DLL?

我正在尝试让SQLite与WinRT兼容。我已将WinRT不支持的旧调用切换为新调用。现在我已经编译了项目,我想验证它没有使用任何旧的API调用或不受支持的调用。WindowsAppCertKit似乎只能验证实际的Metro应用程序。如何验证WinRTDLL?编辑:应用认证套件中似乎存在错误。它似乎没有验证引用的dll。如果您将代码移至应用程序,它会对其进行验证。此外,对于Metro不支持的调用,编译时错误并不总是存在。我需要设置一个标志来在编译时捕获这些错误吗?有问题的文件是一个C文件,仅为此文件关闭了WinRT扩展。 最佳答案

多线程系列(二) -Thread类使用详解

一、简介在之前的文章中,我们简单的介绍了线程诞生的意义和基本概念,采用多线程的编程方式,能充分利用CPU资源,显著的提升程序的执行效率。其中java.lang.Thread是Java实现多线程编程最核心的类,学习Thread类中的方法,是学习多线程的第一步。下面我们就一起来看看,创建线程的几种方式以及Thread类中的常用方法。二、创建线程的方式在JDK1.8版本中,创建线程总共有四种方式:继承Thread类实现Runnable接口使用Callable和Future创建线程使用JDK8的Lambda创建线程2.1、通过继承Thread创建线程通过继承Thread类来创建线程是最简单的一种方法,

c++ - Gtkmm : How to update UI from another thread? 连续

线程A:运行Gtkmm消息循环的UI线程。线程B:通过网络接收数据并将其记录到文件中。现在,我希望在线程B中转储到文件中的相同数据也同时显示在UI上的Gtk::TextView中。最好的方法是什么?Glib::Dispatcher不携带数据。所以它只适用于通知工作已完成。libSigCX让我很难过。 最佳答案 我会尝试使用Glib::Dispatcher连同Glib::Threads::Mutex(或等效)protectedstd::queue数据结构。在将每个工作项放入队列后,使用调度程序通知UI线程。