问题标签 [dllexport]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 无法导出模板功能
我有一个名为“SimObject”的类:
我有另一个名为“ITerrainDrawable”的类:
这些类位于不同的库中。SimObject 在 simBase 中,ITerrainDrawable 在 simTerrain 库中。即使 ITerrainDrawable 是从 SimObject 派生的,并且我包含了 simBase 库,我也会收到链接错误:
未解析的外部符号
为什么我会收到此错误?
如果我不使用模板功能,一切正常,但我需要它。
如果我将此函数移动到 simTerrain 库,它可以正常工作,但我不想使用重复的函数,因为有很多像 simTerrain 这样的库。
c++ - DLL:导出为 C/C++ 函数?
我用 C++ 代码在 Visual 中生成了一个 DLL。Dependency Walker 看到 3 个函数导出为 C 函数。
我做了一个 SCons 项目来生成 DLL,3 个函数中的 2 个不被视为 C 函数。
是什么让一个函数被视为一个或 C++ 函数,而无需修改代码?它必须在编译/链接选项中,但我没有找到任何相关的东西。
该函数以宏为前缀:AM_LIB_EXPORT
在.h中,我有:
谢谢。
c++ - 生成导出包含 ATL::CString 成员的类的 DLL 时出现警告 C4251
我正在将基于 ATL 的静态库转换为 DLL,并在任何使用 ATLCString
类(在 atlstr.h 中找到)的导出类上收到以下警告:
警告 C4251: 'Foo::str_' : 类 'ATL::CStringT' 需要有 dll 接口才能供类 'Foo' 的客户端使用
我正确地将Foo
类声明为通过__declspec(dllexport)
. 这是我可以安全忽略的警告还是我做错了什么?DLL 项目设置设置为与 ATL 动态链接,但这似乎没有任何区别。
例如:
此 DLL 的所有客户端也将使用 ATL。
c++ - 如何将 C++ 函数导出为引发异常的 dll?
当我尝试将以下函数导出为 dll 时:
Visual C++ 2008 给了我以下警告:
我需要 extern "C" 因为我使用 Qt QLibrary 来加载 dll 并解析函数名称。没有 extern "C" 就找不到 some_func() 函数。
dll - DLL 如何实现零导出?
我最近遇到了一个安装在我的系统上的 DLL,Dependancy Walker(以及我尝试过的所有其他实用程序)说按名称或序号导出为零,但该文件的大小约为 4mb。我认为 DLL 的唯一目的是导出函数以供其他代码使用,那么没有可见导出的 dll 的目的是什么?
visual-studio - 在 Visual Studio 中自动生成 DLL .DEF 文件?
有没有办法在 Visual Studio 中为 DLL 自动生成 DEF 文件?我以前总是手动创建它们,但必须有一种更简单的方法。
python - distutils 在编译 Windows .dll 时可以使用自定义 .def 来公开额外的符号吗?
我滥用 distutils 来编译 Python 的扩展模块,但我没有使用 Python C API,而是使用 ctypes 与生成的共享库进行对话。
这在 Linux 中运行良好,因为它会自动导出共享库中的所有符号,但在 Windows 中 distutils 提供了.def
仅导出 Python 模块的 init 函数。
如何扩展 distutils 以.def
在 Windows 上提供我自己的,以便导出我需要的符号?
c++ - 使用 ACE_Service_Object
我正在尝试使用 ACE_Service_Object 或 ACE_Shared_Object。我不确定哪一个适用。我试图在 DLL 中封装一些功能,以便 DLL 的使用者打开库,创建导出类的实例,调用类上的一些函数,然后销毁类。一种基本的插件架构。使用 ACE 类解决此问题的最佳方法是什么。它们似乎包含了很多 DLL 加载、查找和卸载细节,使用起来会很好。
下面的代码基本上是我想使用 ACE 类来模仿的。
c++ - 使用 __declspec(dllexport) 的符号导出问题
我在库中使用 __declspec(dllexport) 和几种方法。但是其中一个符号没有正确导出。有问题的值称为“重新启动”。我在下面给出了 dumpbin.exe 的输出:
这似乎表明重新启动没有正确导出,但我不知道为什么。
我使用以下行来导出变量:
这种异常的原因是什么,我该如何解决?
c++ - 在 DLL 中导出静态数据
我有一个 DLL,其中包含一个带有静态成员的类。我使用__declspec(dllexport)
是为了利用这个类的方法。但是当我将它链接到另一个项目并尝试编译它时,我得到静态数据的“未解析的外部符号”错误。
例如在 DLL 中,Test.h
在 DLL 中,Test.cpp
在使用 Test 的应用程序中,我调用 m()。
我还尝试对每种方法分别使用 __declspec(dllexport) ,但静态成员仍然出现相同的链接错误。
如果我使用 dumpbin 检查 DLL(.lib),我可以看到符号已被导出。
例如,应用程序在链接时给出以下错误:
但是 .lib 的垃圾箱包含:
我不知道如何解决这个问题。我究竟做错了什么?我怎样才能克服这些错误?
PS 该代码最初是为 Linux 开发的,.so/binary 组合可以正常工作
编辑:在给定的情况下,应用程序不直接引用静态变量,但该方法是内联的,因为它在标题中。我能够通过将方法移动到 .cpp 文件来解决链接错误。