问题标签 [extern]

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.

0 投票
4 回答
38594 浏览

c++ - 如何停止对我的 DLL 导出函数的名称修改?

我正在尝试创建一个导出名为“GetName”的函数的 DLL。我希望其他代码能够调用此函数而不必知道损坏的函数名称。

我的头文件如下所示:

我的代码如下所示:

当我构建时,DLL 仍然导出名称为:“_GetName@0”的函数。

我究竟做错了什么?

0 投票
6 回答
4398 浏览

c# - 如何设置 C++ 函数以便 p/invoke 可以使用它?

希望这是一个简单粗暴的问题,但这表明我缺乏 C++ 专业知识。我是一名 C# 程序员,过去我曾使用 P/Invoke 和其他人的 C++/C dll 进行过大量工作。但是,这一次我决定自己编写一个包装器 C++ dll(非托管),然后从 C# 调用我的包装器 dll。

我立即遇到的问题是我无法定义 p/invoke 可以找到的 C++ 函数。我不知道它的语法是什么,但这是我目前正在尝试的:

最初我只是有这个,但它也不起作用:

然后在 C# 方面,我有:

一切都可以编译,但是当我执行这个 C# p/invoke 调用时,我得到一个 System.EntryPointNotFoundException: Unable to find an entry point named 'TestFunc' in DLL 'Plugins\TestDLL.dll'。

当然,这在 C++ 端一定是非常简单的东西,我只是不知道它的语法。

0 投票
1 回答
900 浏览

c++ - 在 dll 项目之间使用外部方法?

我有一个调试条件来管理我拥有的内存

这存在于Memory.h中并在 Memory.cpp 中实现。Memory.h 定义为:

现在,我有SoundStuff.hSoundStuff.cpp,它们位于一个单独的项目中,也以与上述类似的方式转换为 dll。所属项目对SoundStuff所属项目具有项目依赖关系Memory。在 SoundStuff.cpp 的实现中FUN_DELETE,来自Memory.h的 被调用。它是通过单独项目中的函数调用的,但无论如何都会调用它。这会导致链接器错误。

错误 LNK2019:未解析的外部符号“void __cdecl operator delete(void *,char const *,int)”(??3@YAXPAXPBDH@Z) 在函数 __unwindfunclet$?Init@SoundStuff@@AAEXXZ$1 SoundStuff.obj 中引用

为什么会这样,我该如何解决?

0 投票
4 回答
2831 浏览

c++ - 'operator new':重新定义,不同的链接(在重新定义的新运算符上使用 _dllspec)

我在 new 的调试版本上使用 __declspec(dllimport/export) :

这导致我得到

错误 C2375:“新操作员”:重新定义;不同的联动。

为什么会这样,你怎么能解决它?这是我现在正在编译的唯一项目。

0 投票
4 回答
5635 浏览

c# - C#:在 shlwapi.dll 中实现或替代 StrCmpLogicalW

为了在我的应用程序中进行自然排序,我目前在 shlwapi.dll 中 P/Invoke 一个名为 StrCmpLogicalW 的函数。我正在考虑尝试在 Mono 下运行我的应用程序,但是当然我不能拥有这个 P/Invoke 的东西(据我所知)。

是否有可能在某处看到该方法的实现,或者是否有一个好的、干净和高效的 C# 片段可以做同样的事情?

我的代码目前如下所示:

所以,我正在寻找的是不使用外部函数的上述类的替代方案。

0 投票
1 回答
1360 浏览

c++ - 来自 C++ 源代码的 C-DLL

我的 C++ 框架有一个 C-Wrapper。因为这应该在 mac 和 windows 上运行,所以我使用scons

warplib.cpp 和 warplib.h 的简单版本如下所示:

warplib.cpp

warplib.h

谁能告诉我这有什么问题?我尝试了几乎所有可能的 'extern "C"' 组合,但它总是向我抛出类似“错误 C2732:链接规范与 '...' 的早期规范相矛盾”之类的东西。

如果我跳过 'extern "C"' 它可以工作,但我看不到 .lib 文件,我很确定我需要它才能真正使用该库。

0 投票
1 回答
621 浏览

c - 在 C 中使用 extern 不能按预期工作

我创建了两个文件:

可调参数.h

和可调参数.c

我项目的所有其他文件都包括“ tunables.h ”。当我加载项目时,Ac 和 Bc 都调用tunables_load_conservative但如果过了一会儿,我在文件 Bc 中调用文件 Ac tunables_load_aggressive() , timer_x仍然为 3。为什么?

这是我的 Makefile:

0 投票
5 回答
1750 浏览

c++ - 在 C 中使用“extern”存储类说明符

以下 extern specifer 的示例用法如何表现。

我们在文件 one.c 和 two.c 中都有一个全局变量 int x 我们想在 three.c 中使用它们,所以在 three.c 中声明这个变量为

extern int x;

当我们编译和链接这些文件时会发生什么?

我的回答是:所有这些文件的编译都应该成功,但是链接器应该在链接时标记一个错误,因为 x.xml 的多个声明。C++ 中的行为会有什么不同吗?

这些是在 C 和 C++ 中同时从两个文件中引用 int x (在三个.c 中)的任何方式。在 C++ 中,我想我们可以使用命名空间来实现这一点。对?

0 投票
1 回答
9087 浏览

c++ - C++ 外部类定义

我正在阅读一些代码:

extern 是指类声明还是实例?

0 投票
5 回答
68662 浏览

c++ - 混合外部和常量

我可以将 extern 和 const 混合为extern const吗?如果是,const限定符是否仅在它声明的范围内强加它的统治,还是应该完全匹配它声明的翻译单元的声明?extern const int i;即,即使实际i不是 const ,我也可以声明说,反之亦然?