草庐IT

native-lib

全部标签

c++ - 将固定大小内存边界上的 native 代码与 GCC/G++/AS 对齐?

我有一个C函数,其中包含将实现字节码解释器的字节码的所有代码。我想知道是否有一种方法可以在固定大小的边界上对齐内存中的编译代码段,以便我可以直接计算从字节码的值跳转到的地址?有点像数组的工作方式,但我不是从计算的地址读取,而是跳转到它。我知道我必须将执行下一个跳转的代码放在每个“字节码代码”段的末尾,并且我必须使边界大小至少与最大段的大小一样大.如果这甚至可能,我将如何告诉编译器/汇编器(gcc/g++/as)以所述方式对齐? 最佳答案 我意识到这并不是您所要求的,但这是使用GCC实现字节码解释器的标准方法。GCC的“compute

.lib 中的 C++ 静态变量未初始化

我在VS2010中有静态库(.lib)并将其链接到我的测试项目。该库有一个我使用以下宏创建的工厂:#defineREGISTER_FACTORY(mType,my_class)\classFactory##my_class:publicCAbstractFactory\{\public:\Factory##my_class():CAbstractFactory(mType){}\CBaseClass*Create()\{returnnewmy_class();}\};\staticFactory##my_classStaticFactory##my_class;应该发生的是,在CAbs

c++ - 错误 LNK1104 : cannot open file 'Debug\MyProjectLib.lib'

我有以下CMakeLists.txt文件来生成我基于Qt的项目:cmake_minimum_required(VERSION2.8.12)project(MyProject)find_package(Qt5Widgets)set(MyProjectLib_src${PROJECT_SOURCE_DIR}/gui.cpp)set(MyProjectLib_hdr${PROJECT_SOURCE_DIR}/gui.h)set(MyProjectLib_ui${PROJECT_SOURCE_DIR}/gui.ui)set(MyProjectBin_src${PROJECT_SOURCE_DI

c++ - 编译器如何使用lib文件?

我很好奇c/c++编译器是如何分析lib文件的?我的意思是说我创建了一个包含一些类的库,我在我的主程序中使用了那个库。编译器如何知道该库中有哪些类名。当然,这些信息以二进制格式存在,我想在我的程序中使用该功能,具体来说,我有一个二进制lib文件,我想知道该lib文件中存在的所有类和属性/函数。这可能吗?如果编译器可以做到,为什么有些库不能?感谢任何线索 最佳答案 编译器不会执行您的建议,但链接器会执行。编译器从包含的与lib文件相关的头文件中知道它需要的信息。然后链接器将您要包含的声明和lib文件及其其他目标文件放在一起。例如,可能

c++ - 缺少有关 Boost 的详细信息(.lib 文件)

在使用某些Boost库时,我在哪里可以找到用于链接我的程序的lib文件?决定尝试它的线程功能,但我得到了Error6fatalerrorLNK1104:cannotopenfile'libboost_thread-vc90-mt-gd-1_42.lib'InterviewPractice在我包含之后Error6fatalerrorLNK1104:cannotopenfile'libboost_thread-vc90-mt-gd-1_42.lib'InterviewPractice我找不到在boost网站上正确链接的.lib文件的位置?有小费吗?:) 最佳答案

c# - Asp.net调用C#层调用Managed C++调用Native C++

我的项目结构如下:ASP.NET调用C#层调用ManagedC++调用NativeC++(我试图避免使用互操作,所以这就是托管C++层的原因)我编写了测试C#层的单元测试,它工作正常。当我尝试运行asp.net页面时出现:“无法加载文件或程序集...”错误。我发现当我将NativeC++dll复制粘贴到“TemporaryASP.NETFiles”(到相应的文件夹)时,该网站可以正常工作。似乎ManagedC++代码只有在位于同一文件夹中时才能找到NativeC++代码-显然我不能将我的Nativedll放在临时文件。有没有办法在全局位置设置Native(不适用于System32)?感

c++ - 您如何处理平台之间变化的整数的 native 大小?

恐怕我已经知道了这个问题的答案,但我想确定...我有一个相当大的项目,它有一个typedef原生类型的头文件:typedefunsignedlongintu32;typedefsignedlongints32;//etc...不可避免的事情已经发生,我现在正尝试在long是64位而不是32位的系统上编译。修复它的最佳方法是什么?我可以使用int(或来自stdint.h的int32_t/uint32_t)来typedef满足我所知道的平台上的32位大小,但这似乎仍然值得怀疑。printf样式函数也存在问题,其中使用了%ld(编译器提示并希望看到%d)。这些都必须更改,不是吗(也许在int

c++ - 在 OSX 上使用 CMake 构建 Unity native 包

我有一个Xcode项目,它构建了一个包含库的包。我使用以下菜单创建了项目:NewProject->Framework&Library->Bundle为了提供更多背景信息,我想创建一个nativepluginforUnity.目前header非常简单,仅包含一个header和一个源文件。我现在希望能够使用CMake生成一个类似的项目,但我正在努力让它发挥作用。我的CMake文件归结为:cmake_minimum_required(VERSION3.3)project(Plugin)set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-std=c++11")set(

Spring Native 解放 JVM

一、SpringNative是什么SpringNative可以通过GraalVM将Spring应用程序编译成原生镜像,提供了一种新的方式来部署Spring应用。与Java虚拟机相比,原生镜像可以在许多场景下降低工作负载,包括微服务,函数式服务,非常适合容器和Kubernetes。使用原生镜像有明显优势,如快速启动,提高峰值性能以及降低内存消耗。SpringNative支持Java和Kotlin。这个项目的目标是寻找SpringJVM的替代方案,提供一个能将应用程序打包,并运行在轻量级容器的方案。期望能够在SpringNative中支持所有的Spring应用程序(几乎不用修改代码)。原生(本地)

c++ - 无法打开文件 'dxguid.lib'

我遇到了烦人的链接器问题-VS2010声称它找不到这个文件,但它显然在那里,而且路径是正确的-我在同一个文件夹中使用其他库,但都没有问题。(d3d9.lib和dinput8.lib)我使用的是2010年2月版的DXSDK(DX9),以防相关。我什至尝试过复制/粘贴文件名,所以我知道我没有输入错误。我的“附加依赖项”行如下所示:Library.lib;d3d9.lib;dinput8.lib;dxguid.lib;%(AdditionalDependencies)附加库目录行是(用于调试构建):$(DXSDK_DIR)\Lib\;$(SolutionDir)\Debug;%(Additi