草庐IT

c++ - 如何让 GCC 将 .text 部分编译为 ELF 二进制文件中的可写部分?

我希望能够动态更改我正在使用的库中的可执行代码。本质上,如果不需要某些函数,我想动态地NOP掉它们。但是,我正在使用的库的.text部分是不可写的(大多数程序都是这种情况)。我有库的源代码,所以想使用GCC将其编译为可写。有办法吗? 最佳答案 在一般意义上,mprotect是sys/mman.h下的首选(在符合POSIX的系统上)(检查http://linux.die.net/man/2/mprotect)。只需获取您进程的可执行部分的地址和系统页数,并调用mprotect请求权限;写信给它;然后,再次调用mprotect释放写权限

c# - 如果我们使用 NGen.exe 将其编译为 native 代码,C# 是否需要运行 .NET 框架?

我知道C++代码直接在本地机器上运行。我也知道我们可以使用NGen.exe将c#代码编译成native代码。我的问题是如果我们使用Native代码生成器NGen.exe将c#代码编译成native代码,还需要.NET框架来运行吗? 最佳答案 事实上,如果您将C++代码编译成Windows可执行文件,您仍然需要Win32dll和其他东西。你的程序无法在除了你的程序之外什么都没有的CPU上运行。C#也是如此。如果将C#编译为native代码,则不需要JIT编译器,它是.NET运行时的一部分。但是您仍然需要.NET运行时的所有其他部分。例

c++ - 如何在不调用链接器的情况下将 .cpp 文件编译为目标文件

我正在尝试从构建过程中单独编译单个.cpp文件。如果我进行完整构建,那么编译步骤会输出到创建项目时配置的目录。但是,如果我只是请求编译,我最终会将目标文件转到与源代码相同的目录,更糟糕的是,它继续将目标文件链接到可执行文件,而实际上它应该在进行编译。请注意,我正在为C++11使用clang++进行编译,但我认为这对为什么它第二次调用Clang++.exe进行链接没有任何要求没有任何限制。编辑1构建时会这样做--------------Build:DebuginGOTW(compiler:GNUGCCCompiler)---------------clang++.exe-Wall-fex

c++ - cmake 不会编译为 C++ 11 标准

我是C++的新手,一直在为编译/制作/链接/构建/任何事情而苦苦挣扎,让我们看看是否有人可以帮助我。我做了一些搜索,发现其他人也有类似的问题,但我尝试了他们的解决方案但没有成功,所以这里是:使用C++11功能(如统一初始化、线程、to_string等)的简单C++程序生成错误,“xxx”未在范围内声明。具体来说,现在我想使用to_string,并在std命名空间或特别是std::to_string中使用它会产生错误“to_string”不是STD的成员。很明显它不是用C++11编译的。所以这是我的make文件:#####################################c

c++ - 资源文件是编译为 UNICODE 还是 ANSI 代码页?

首先-如果此问题已被回答一百次以上,我深表歉意!哦!但我的搜索功能显然很糟糕,因为我没有运气回答这个基本问题:HowareresourcesstoredintheEXE/DLL?AsUNICODE(UCS-2,Windowsnativeinternalcharacterformat),orasmultibytecharactersusingthecode-pageoftheresourcesblock?如何将UNICODE字符串嵌入到资源(.rc)中?能否从VS2012中将UNICODE(UCS-2)文本插入到语言字符串中?Windows仍在使用UCS-2,还是在内部使用UTF16?我

c++ - 除了避免 'extern C' 并获得 'C++ exception' 之外,将 Lua 编译为 C++ 有什么好处?

我是Lua的新手,我想使用C++将Lua嵌入到我们的游戏项目中。我注意到的第一件事是,允许将Lua编译为C++代码,并且从文档中,我了解到这将消除环绕Luaheader的“externC”,并且错误处理将是C++异常而不是跳远/定跳。我的问题是,除了这两个区别之外,将Lua代码编译为C++代码还有其他真正的好处吗?这两个并不能真正说服我,因为,1)用'externC'包装cheader并不困扰我,2)我们的项目不允许异常,所以我必须更改luaconf.h才能使用longjump/setjump任何方式。 最佳答案 那些是将Lua编译

kotlin - 编译为 JavaScript 时如何测试 Kotlin 代码?

我在IntelliJ(Ultimate)中有一个KotlinJavaScript项目。我希望能够为这个项目编写测试。我尝试了许多不同的方法,从使用Spek编写测试(这将是理想的)到使用Karma/Jasmine编写测试。Spek的问题是我无法让它与JavaScript项目一起工作。它提示一些jars不是JavaScript库。Karma/Jasmine的问题是我无法弄清楚如何让测试运行程序从我的Kotlin测试输出中提取测试。当测试是用纯JavaScript编写时,它们无法访问我的Kotlin对象,因为我不知道如何正确引用它们,因为在进行Kotlin到JavaScript编译时发生的所

kotlin - 编译为 JavaScript 时如何测试 Kotlin 代码?

我在IntelliJ(Ultimate)中有一个KotlinJavaScript项目。我希望能够为这个项目编写测试。我尝试了许多不同的方法,从使用Spek编写测试(这将是理想的)到使用Karma/Jasmine编写测试。Spek的问题是我无法让它与JavaScript项目一起工作。它提示一些jars不是JavaScript库。Karma/Jasmine的问题是我无法弄清楚如何让测试运行程序从我的Kotlin测试输出中提取测试。当测试是用纯JavaScript编写时,它们无法访问我的Kotlin对象,因为我不知道如何正确引用它们,因为在进行Kotlin到JavaScript编译时发生的所

c++ - 将dll编译为静态库时如何处理DLL_EXPORT?

我在VisualC++2010中有一个项目,其中包含关键头文件中的预处理器指令。其实就是ZMQ源码。项目通常配置为dll,所以header使用了DLL_EXPORT的状态(defined/notdefined)。如果项目用于编译dll,则头文件可由dll项目或客户端代码使用,这要归功于从zmq.h中获取的以下设置:#ifdefined_WIN32#ifdefinedDLL_EXPORT#defineZMQ_EXPORT__declspec(dllexport)#else#defineZMQ_EXPORT__declspec(dllimport)#endif但是,这不支持我正在构建静态库

将wcecompat编译为dll

我正在使用wcecompat来弥合WinCESDK和OpenSSL之间的差距。由于LGPL许可证问题,我想将其编译为动态链接库。这是makefile的一部分(完整文件位于https://github.com/mauricek/wcecompat/blob/master/makefile)。我的问题是,如何修改它以构建dll而不是静态库?all:lib\wcecompat.liblib\wcecompatex.libecho$(OBJS)obj:@mdobj2>NULlib:@mdlib2>NUL$(OBJS):makefileobjlib\wcecompat.lib:lib$(OBJS