Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:将外部XML文件添加到DLL项目以在执行期间加载/访问它_C++_Visual Studio_Dll_Embedded Resource - Fatal编程技术网

C++ C++;:将外部XML文件添加到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

有没有一种方法可以将文件或其他二进制数据添加到DLL中,以便程序可以在运行时通过使用文件名“加载”来访问它

我正在编写一个DLL,其中包含一些代码片段,如:

SomeObject mObject = SomeObject("filename.xml");
现在我有两个问题:

  • 我不知道运行时.xml文件放在哪里,因为我不知道DLL在哪里使用
  • 我甚至不想将.xml文件提供给DLL的用户
  • 其中
    SomeObject
    来自外部库,因此我无法更改这些对象的创建方式。需要一些可以访问的数据,比如一个名为“filename.xml”的文件

    那么,如何将xml文件“包含”到该DLL中呢

    我使用Visual Studio 2010和Visual C++编译器。


    我读过一些关于“资源”的东西,但看起来我不能像访问外部文件一样访问它们(我的构造函数调用需要这些文件),而是直接导入它们?也许我错了…

    您可以向EXE或DLL添加任何数据段。然后在运行时。但您不能欺骗第三方代码,使其像访问文件一样访问资源。我想,您可以创建一个临时文件,将资源中的数据写入其中,将文件名传递给第三方类,然后删除该文件。非常感谢!我应该知道不可能像访问文件一样访问资源。不过,只要用户具有对文件夹的写入权限,创建临时文件的工作就像一个符咒。这也解决了不知道.xml/dll在目标磁盘上的位置的问题。如果你创造一个答案,我会接受它!
    SomeObject
    是否不接受文件的完整路径?依赖当前目录可写听起来像是自找麻烦。另一方面,您可以使用
    GetTempFileName
    在专门为临时文件指定的目录中创建文件。无论如何,您可以使用
    GetModuleFileName
    查找DLL在磁盘上的位置;但是,我也不建议假设这个目录是可写的——很可能不是。