草庐IT

external-system

全部标签

c++ - 错误 LNK2019 : unresolved external symbol ___iob_func referenced in function "void __cdecl Padding(int)"

使用FTDIAPI可以在VisualStudio2012下正常编译和链接。但在VS2014下,它给出:ErrorLNK2019:unresolvedexternalsymbol___iob_funcreferencedinfunction"void__cdeclPadding(int)"标准库有变化吗? 最佳答案 是的,标准库已经改变,FTDI似乎并不关心-至少从CDM2.12.18驱动程序版本开始不关心。问题在thisquestion的答案中描述。.ftd2xx.lib中devcon.obj的void__cdeclPadding(

c++ - C+ +'s extern-"C"对非 C 语言的功能

众所周知,对C++函数声明extern"C"使其名称具有C链接,使C代码能够链接。我的问题是-是否有其他编程语言我们可以使C++函数名称链接到某些语言,例如extern"Lisp"或extern"FORTRAN"?如果不是,为什么?"C"背后的内部结构是什么造成了限制?有哪些替代方案? 最佳答案 C++标准7.5.2dcl.link说:LinkagebetweenC++andnon-C++codefragmentscanbeachievedusingalinkage-specification:linkage-specificati

c++ - C++中extern关键字的问题

下面两个声明有什么区别?我认为它们是等效的,但第一个示例有效,而第二个示例无效。我的意思是它编译并运行,但位图显示代码显示空白。我还没有逐步完成它,但是我是否遗漏了一些明显的东西?GUI_BITMAP是描述位图的简单结构。这是针对VC++2005的,但我认为它在VC++2008中也失败了。在这个问题上摸不着头脑......示例1:extern"C"constGUI_BITMAPbmkeyA_cap_active;extern"C"constGUI_BITMAPbmkeyA_cap_inactive;示例2:extern"C"{constGUI_BITMAPbmkeyA_cap_acti

php - 从 PHP Web 应用程序调用 C++ 库 : system() vs SWIG PHP extension?

我有一个PHPWeb应用程序需要调用C++库中的函数。该库由供应商提供(Linux机器上的libfoo.a)。我的第一直觉是创建一个链接到libfoo.a的C++可执行文件,并将命令行参数传递给该函数。然后,PHPWeb应用程序可以对我的C++可执行文件执行system()调用。这将很容易实现。我担心的是为每次调用创建一个新的系统进程是否会增加很多开销。这个开销是多少?另一种方法是,我可以使用SWIG将C++函数包装在PHP扩展中,但我没有C++源代码。SWIG是否支持与“.a”库链接?是否需要我团队中的所有其他工程师更改他们的PHP配置以在libfoo.a中构建?如果system()

c# - C++/CLI 中的 System::IntPtr 到 int*

我正在尝试使用C++/CLI互操作层从C#应用程序调用现有的C++库。我有一个看起来像这样的C++函数:voiddoSomething(int*foo,intsize);还有一个C#对象,它包含两个字段,一个IntPtrstart和一个intsize。我编写了一个如下所示的托管C++类:publicrefclassWrapper{public:voidrun(System::IntPtritn,intsize);};现在我想在Wrapper::run中调用doSomething,并让doSomething可以访问C#对象指向的同一数据block。如果没有拷贝,我尝试做的事情是否可行?如

c++ - 这里是否需要extern关键字,cpp文件中的const

如果我在头文件中namespaceBob{externconstTx;};在源文件中externconstTBob::x=123;源文件中的第二个extern是必须的还是可选的?我搜索并发现了相互矛盾的信息。从这个网页:http://msdn.microsoft.com/en-us/library/357syhfh.aspx但要在C++中获得相同的行为,您必须[在源文件中]将const变量声明为:externconstinti=2; 最佳答案 通常,extern关键字告诉编译器不要定义符号,因为它将在其他地方定义。所以写例如name

c++ - 通过 `void *` 和 C++ `extern "C"` 函数调用在 C 中初始化一个 C++ 类

目标是在C中使用OpenCV3。OpenCV有一个CAPI,但很久以前就被弃用了。所以我所做的是C++中的抽象,将所有指向classcv::Something的指针转换为void*,我无法在C中取消引用,但可以传递在执行工作的C++extern"C"函数之间。为了使用这个抽象,我做了一些C函数,它应该从文件中读取图像并将其保存到新文件中:#include"foo.h"#include"libalx/extra/cv.h"intfoo(constchar*restrictsrc,constchar*restrictdest){void*img;intstatus;status=-1;if

c++ - 在链接规范(extern "C",extern "C++")中,在 C++ 代码中包含标准 C header 的指定行为是什么?

通常在全局命名空间中包含C++中的标准库header,在任何extern之外s,像这样:#includeintmain(){}但是,如果您在其中包含一个标准库头文件,会发生什么情况呢?例如:extern"C"{#include}intmain(){}或extern"C++"{#include}intmain(){}它是否指定了在这两种情况下应该发生什么,或者它是实现定义的还是未定义的?C++1117.6.2.3p1说C++标准库头文件把东西放在extern"C++"中,但我的初步解读是这不适用于这样的C头文件.C++1117.6.2.2p3表示header只能是#included在任何

c++ - 关于静态数据成员和成员函数定义的 extern 关键字,C++

C++标准是否允许在定义静态数据成员和成员函数时使用extern关键字(前提是链接匹配)?例如:structA{staticinta;//externallinkagevoidf();//externallinkage};externintA::a;externvoidA::f(){} 最佳答案 extern关键字不允许作为类成员的存储类说明符。来自[dcl.stc]/5:[...]Theexternspecifiercannotbeusedinthedeclarationofclassmembersorfunctionparame

c++ - extern C 返回类对象

我想要一个插件,使用更简单的名称来解析其他C++代码。classB{};extern"C"Bfoo();//toavoidnamemanglinginordertobeloadedbydlsym并且在程序的另一部分(也是C++并且与插件共享相同的类B定义):B(*func)();func=dlsym("/path/to/so","foo");Bm=func();这样的代码是否会导致任何问题,即是否允许(按照标准)在extern"C"函数中使用C++类作为参数或返回类型?它似乎适用于我的gcc,但其他人呢? 最佳答案 这应该可行,但有