我有一个C库,我构建为Linux的共享对象和带有MinGW32的Windows的DLL.API取决于几个数据文件(统计模型),我真的想用SO/DLL滚动,因此部署只是一个文件.
看起来我可以使用编译的"资源文件"为Windows实现这一点windres,但后来我必须为Windows编写一堆资源处理代码,而我仍然坚持使用Linux上的文件.
有没有办法在Linux上实现相同的功能?
更好的是,有便携式解决方案吗?
我有一个嵌入在我的程序集中的CSS文件.我需要使用此CSS文件为某些元素设置背景图像,并且图像也需要是嵌入式资源.这可能吗?有什么方法可以做到这一点吗?
我把现有的样式表放入这个dll然后意识到图像没有出现时遇到了问题.我不知道有什么方法可以使它工作,因为我需要知道嵌入图像的URL.
有人做过这样的事吗?
运行从Eclipse导出的JAR文件时,不会加载我的图像.
我有资源类包中的图像.我已经尝试了一个图像源文件夹,但没有运气.
从Eclipse加载时工作正常.图像位于导出的JAR文件中,因此它们的导出正常.
我试过了:
label.setIcon(new ImageIcon(MainFrame.class.getResource("/resources/header.jpg")));
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
URL url = getClass().getResource("/resources/header.jpg");
Image image = Toolkit.getDefaultToolkit().getImage(url);
label.setIcon(new ImageIcon(image));
Run Code Online (Sandbox Code Playgroud)
和:
try
{
label.setIcon(new ImageIcon(ImageIO.read(getClass().getResource("/resources/header.jpg"))));
}
catch (IOException e1)
{
e1.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我对Qt很新.在我的程序中,我在.qrc资源文件中添加了一些图标文件.
我们如何在程序中列出存储在qrc中的文件?
我在C#WPF应用程序中有一个图像,其构建操作设置为"资源".它只是源目录中的一个文件,尚未通过拖放属性对话框添加到应用程序的资源集合中.我试图把它写成一个流,但我无法打开它,尽管尝试了很多点,斜线,命名空间和其他一切的变化.
我可以访问它以在xaml中使用"pack:// application:,,,/Resources/images/flags/tr.png",但我无法获取包含它的流.
大多数地方似乎都在说使用
using(BinaryReader reader = new BinaryReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("ResourceBlenderExpress.Resources.images.flags.tr.png"))) {
using(BinaryWriter writer = new BinaryWriter(File.OpenWrite(imageFile))) {
while((read = reader.Read(buffer, 0, buffer.Length)) > 0) {
writer.Write(buffer, 0, read);
}
writer.Close();
}
reader.Close();
}
Run Code Online (Sandbox Code Playgroud)
哪个我没有运气.
我们创建了一个允许在外发电子邮件中嵌入图像的系统.
这是我们系统创建的原始消息.此示例包含图像附件和嵌入图像.
Mime-Version: 1.0
From: ...
To: ...
CC:
Subject: test
x-sender: ...
x-mailer: ...
Content-Type: multipart/mixed; boundary="-------------...A128803765634794"
---------------...A128803765634794
Content-Type: multipart/related; boundary="-------------...B128803765634796"
---------------...B128803765634796
Content-Type: text/html; charset="UTF-8"
<p style="margin: 0; padding: 0"><img src="cid:083.gif" alt="" /></p>
---------------...B128803765634796
Content-type: image/gif; name="083.gif"
Content-ID: <083.gif>
X-Attachment-Id: 083.gif
Content-Disposition: Embedded; filename="083.gif"
Content-transfer-encoding: base64
............................................................................
............................................................................
......................................................
---------------PineappleCodeB128803765634796--
---------------PineappleCodeA128803765634794
Content-type: image/gif; name="waiting.gif"
Content-Disposition: Attachment; filename="waiting.gif"
Content-transfer-encoding: base64
............................................................................
............................................................................
......................................................
---------------PineappleCodeA128803765634794--
Run Code Online (Sandbox Code Playgroud)
是否应该添加另一个标题或我应遵循的规则?
我注意到了一件事 ......我猜它是我的问题和部分Gmails的一部分.但无论如何,我想让它停止发生
当收到Gmail中的电子邮件时,我得到了
图像不会显示.
显示以下图像 - 始终显示来自...的图像
然后,嵌入的图像显示为图像附件(就像我的其他图像附件一样)
我单击下方显示图像,我的图像显示在电子邮件正文中,但未从"附件"部分中删除.
如果我回到我的收件箱并回到电子邮件,它看起来很好.
我不明白为什么会那样做.它不是链接图像(来自外部URL),并且在将嵌入图像从Gmail发送到Gmail时不会发生这种情况.这就是让我觉得我可能会做错事的原因,我担心它可能会影响其他收件人.
我正在用C++编写一个应用程序,它依赖于我项目中的各种资源.现在,我有从生成的可执行文件到我的源中硬编码的每个资源的相对路径,这允许我的程序打开文件并读入每个资源中的数据.这工作正常,但它要求我从相对于资源的特定路径启动可执行文件.因此,如果我尝试从其他任何地方启动我的可执行文件,它将无法打开文件而无法继续.
有没有一种可移植的方法让CMake将我的资源嵌入到可执行文件(或库)中,以便我可以在运行时只在内存中访问它们而不是打开路径脆弱的文件?我找到了一个相关的问题,看起来嵌入资源可以用一些ld魔法做得很好.所以我的问题是如何使用CMake 以便携,跨平台的方式做到这一点?我实际上需要在x86和ARM上运行我的应用程序.我只支持Linux(嵌入式),但如果有人可以建议如何为Windows(嵌入式)做这个,也可以获得奖励积分.
编辑:我忘了提到解决方案的理想属性.我希望能够在为ARM构建时使用CMake交叉编译应用程序,而不是必须在我的ARM目标上本地编译它.
我有一个使用MEF的复合ASP .NET MVC 3 Razor应用程序.如果我要Views在应用程序的常规文件夹下部署插件作为DLL文件和视图(CSHTML),一切都会好起来的.但这不是很干净,如果我不将视图作为嵌入式资源放在DLL文件中(以及控制器和模型),它将不是真正的插件.
我跟着很多文章(其中大部分都已过时).事实上,Stack Overflow上有一个非常好的:类库中的控制器和视图
我还检查了文档VirtualPathProvider,我已经能够构建一个自定义文件,在程序集中找到该文件并完美加载它(或至少获取它的流).为此,我遵循了VirtualPathProvider MSDN上的文档.
VirtualFile还有一个实现,但VirtualDirectory尚未实现.
这是问题所在.我正在使用Razor的观点.我知道他们需要web.configRazor文件中的配置规范来构建它们.但是如果我将它们嵌入到DLL中,那么这个配置就会丢失.
我想知道这是不是我继续得到错误的原因:
'〜/ Plugins/CRM.Web.Views.CRM.Index.cshtml'中的视图必须从WebViewPage或WebViewPage派生.
也许我只需要添加一些代码来使它工作?有任何想法吗?
asp.net-mvc virtualpathprovider embedded-resource razor asp.net-mvc-3
我知道如何获取给定类路径资源的输入流,从输入流读取直到我到达终点,但它看起来像一个非常常见的问题,我想知道是否有一个我不知道的API,或者是一个库会让事情变得如此简单
byte[] data = ResourceUtils.getResourceAsBytes("/assets/myAsset.bin")
Run Code Online (Sandbox Code Playgroud)
要么
byte[] data = StreamUtils.readStreamToEnd(myInputStream)
Run Code Online (Sandbox Code Playgroud)
例如!
通过Windows API将二进制资源嵌入到PE映像(EXE,DLL)中非常容易(参见http://msdn.microsoft.com/en-us/library/ms648008(v=VS.85).aspx).
Linux中是否有类似的标准API?
或者某种事实上的资源嵌入方法?
目标是将一些静态二进制和/或文本数据嵌入到可执行文件中,例如图片,HTML等.这样程序二进制分发就像制作一个文件一样简单?(假设所有库依赖项都可以)
更新:
根据bdk的建议,我尝试了使用gcc mingw嵌入二进制blob中描述的解决方案,它对我有用.虽然,有一些值得一提的问题:我的项目(在Code :: Blocks中)由许多C++文件组成,并将二进制数据添加到任何相应的目标文件中,使得它们无法破坏构建 - objdump -x将显示大多数嵌入后符号已经消失(我没有找到如何解决它).为了解决这个问题,我在项目中添加了一个空的虚拟.cpp文件,其唯一目的是提供一个可以使用的目标文件,并为该文件编写了以下自定义构建步骤,该文件很好地完成了工作(示例使用Code :: Blocks宏) ):
$compiler $options $includes -c $file -o $object
ld -Ur -b binary -o $object <binary payload path>
Run Code Online (Sandbox Code Playgroud)