C++ C++;:将外部XML文件添加到DLL项目以在执行期间加载/访问它
有没有一种方法可以将文件或其他二进制数据添加到DLL中,以便程序可以在运行时通过使用文件名“加载”来访问它 我正在编写一个DLL,其中包含一些代码片段,如:C++ C++;:将外部XML文件添加到DLL项目以在执行期间加载/访问它,c++,visual-studio,dll,embedded-resource,C++,Visual Studio,Dll,Embedded Resource,有没有一种方法可以将文件或其他二进制数据添加到DLL中,以便程序可以在运行时通过使用文件名“加载”来访问它 我正在编写一个DLL,其中包含一些代码片段,如: SomeObject mObject = SomeObject("filename.xml"); 现在我有两个问题: 我不知道运行时.xml文件放在哪里,因为我不知道DLL在哪里使用 我甚至不想将.xml文件提供给DLL的用户 其中SomeObject来自外部库,因此我无法更改这些对象的创建方式。需要一些可以访问的数据,比如一个名为“fi
SomeObject mObject = SomeObject("filename.xml");
现在我有两个问题:
SomeObject
来自外部库,因此我无法更改这些对象的创建方式。需要一些可以访问的数据,比如一个名为“filename.xml”的文件
那么,如何将xml文件“包含”到该DLL中呢
我使用Visual Studio 2010和Visual C++编译器。
我读过一些关于“资源”的东西,但看起来我不能像访问外部文件一样访问它们(我的构造函数调用需要这些文件),而是直接导入它们?也许我错了…您可以向EXE或DLL添加任何数据段。然后在运行时。但您不能欺骗第三方代码,使其像访问文件一样访问资源。我想,您可以创建一个临时文件,将资源中的数据写入其中,将文件名传递给第三方类,然后删除该文件。非常感谢!我应该知道不可能像访问文件一样访问资源。不过,只要用户具有对文件夹的写入权限,创建临时文件的工作就像一个符咒。这也解决了不知道.xml/dll在目标磁盘上的位置的问题。如果你创造一个答案,我会接受它!
SomeObject
是否不接受文件的完整路径?依赖当前目录可写听起来像是自找麻烦。另一方面,您可以使用GetTempFileName
在专门为临时文件指定的目录中创建文件。无论如何,您可以使用GetModuleFileName
查找DLL在磁盘上的位置;但是,我也不建议假设这个目录是可写的——很可能不是。