如果我在运行时重新编译可执行文件会发生什么?操作系统在开始运行时是否将所有可执行文件的内容读入内存,因此它永远不会读取新的可执行文件?或者它会读取新的可执行文件的部分,认为它没有改变,导致可能未定义的行为?
如果我运行的脚本在循环中重复调用可执行文件,并且在脚本运行时重新编译可执行文件,该怎么办?是否保证循环的未来迭代将调用新的可执行文件,并且只有在进行切换时正在进行的调用的结果可能已损坏?
我的操作系统是Linux,但我也很好奇Windows上会发生什么.
我有一些我写的.py文件,我想在另一台机器上运行.目标机器没有安装python,我无法通过策略"安装"它.我能做的是复制文件,运行我的东西,然后删除它们.
我尝试的是将我的开发python文件夹转移到目标机器并cd到python文件夹并运行python.exe /path/to/.py/file.它给了我一个错误,说python.dll没有注册.如果我注册的DLL可能会让我远离"违规政策"行.
无论如何,我可以在没有实际安装python的机器上完成运行python文件(试图让py2exe现在正常工作,但这很痛苦)?
我想知道是否有办法在matlab中从'.m'文件创建'.exe'文件,这样它就可以在没有MATLAB的机器上运行(就像在C,C++中一样)我知道编写MATLAB函数是一种方法,但不确定它是否可以在没有MATLAB的机器中运行.
此外,我想隐藏我的代码,只是创建一个脚本,可以由用户使用自己的数据文件运行.
我使用.jar开发一个项目来重用代码.
所以我在.jar上命名为TOOLS.jar,我在文件HelloWorld.java中开发了一个简单的应用程序,它从TOOLS.jar引用我的包TOOLS
我用这个命令行编译:
javac -g -d C:\MyApp -cp TOOLS.jar HelloWorld.java
Run Code Online (Sandbox Code Playgroud)
它很成功,当我想执行我的应用程序时,我使用这个命令(我在C:\ MyApp文件夹中):
java -cp <path>\TOOLS.jar;. HelloWorld
Run Code Online (Sandbox Code Playgroud)
它很成功,但我的问题是:
当我有多个外部.jar时,如何执行我的应用程序?
我是否必须使用-cp选项在命令中添加每个?
有没有办法只生成一个二进制文件并执行它(与C程序一样的.exe)?
我有一个用C++编写的小型演示可执行文件,它只依赖于在运行之前加载的一个5kb PNG图像,用于我制作的像素文本.由于这个文件,我需要提供一个ZIP存档而不是只有一个可执行文件,这会在下载和"播放"之间产生足够的摩擦,我相信这会阻止一些人尝试它.
我的问题是,无论如何将PNG文件(以及任何其他文件)真正嵌入到可执行文件或源代码中,以便它是一个文件,并且可执行文件可以使用它吗?
我能够将PNG解析为字节流,因此不需要将其转换为像素数据.
提前致谢!(存在与此类似标题的其他问题,但他们和他们的答案似乎涉及更具体的问题,并且不是很有帮助)
编辑:编译器是Visual C++ 2010,这是在Windows上(虽然我想避免Windows特定的实用程序)
edit2:Alf的答案看起来像是最便携的方法,所以我很快写了一个函数来将PNG文件解析成TXT或头文件,可以读作unsigned char数组.它在这种形式下似乎与PNG文件本身相同,但我的png加载器不接受该数组.从内存加载时,PNG解析器会接受(void * buffer, size_t length)它是否重要.
代码,如果你想看,但如果你认为它们比这个方法更好,我仍会接受其他答案:
void compileImagePNGtoBinary(char * filename, char * output){
FILE * file = fopen(filename, "rb");
FILE * out = fopen(output, "w");
unsigned char buffer[32];
size_t count;
fprintf(out, "#pragma once \n\n static unsigned char TEXT_PNG_BYTES[] = { ");
while(!feof(file)){
count = fread(buffer, 1, 32, file);
for(int n = 0; n < count; ++n){
fprintf(out, "0x%02X, ", buffer[n]);
};
};
fprintf(out, "};"); …Run Code Online (Sandbox Code Playgroud) 一直在玩cython.通常用Python编程,但在前一生中使用过C. 我无法弄清楚如何制作一个独立的可执行文件.
我已经下载了cython,我可以创建一个.pyx文件(这只是一个扩展名为.pyx的普通Python文件),它在Python shell中执行,使用:import pyximport; pyximport.install()
我可以在命令行生成一个.c文件:cython file.pyx我可以通过构建标准的setup.py来生成一个.so文件并执行:
setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
我尝试使用带有各种选项的gcc从.so文件中创建一个可执行文件,但总是有大量丢失的文件,标题等.尝试过从几乎所有地方指向标题,但没有成功,并且我并不熟悉所有gcc选项的功能,或者即使我应该使用gcc.
我在这里断开了事实,我可以在Python shell中运行我的程序,但不是在命令行,(我不希望用户必须进入shell,导入模块等).
我在这里错过了什么?
当我创建.exe时,我可以右键单击它并转到属性 - >详细信息.然后我得到一个列表,如:
Run Code Online (Sandbox Code Playgroud)File Description | Type | Application File Version | Product Name | Product Version | Copyright | Size | 18.0 KB Date Modified | 6/16/2009 8:23 PM Language |
如何更改这些属性?(另外,有没有办法改变图标?)
我想在命令行(linux和mac)上运行我正在创建的Java程序.我不想一直输入"java"和参数,所以我在考虑创建包装器脚本.最好的方法是什么,以便它们在任何地方工作?我也希望能够传递参数.我正在考虑使用"shift"来做到这一点(删除第一个参数).
如果不使用脚本,有没有更好的方法呢?也许制作一个不需要通过"java"命令调用的可执行文件?
所以我在main.cpp和main2.cpp中都使用了int main.我希望得到2个exes.是否可能以及创建此类项目的指示是什么?
如果你在基于Linux的平台上编译一个程序,比如C,然后移植它来使用MacOS库,它会起作用吗?
核心机器代码是来自兼容Mac和Linux的编译器吗?
我问这个的原因是因为两者都是"基于UNIX的"所以我认为这是真的,但我不太确定.