我有一个C++ Win32
正在编写和读取文本文件的程序。这个 C++ 程序生成一个 dll,我在我的 ASP.NET Web 应用程序中引用了这个 dll。
使用 P/Invoke,我正在调用从该 dll 读取和写入文件的方法。
当我在 WPF 应用程序中使用 P/invoke 对其进行测试时,该 dll 工作正常。引用 dll 位于bin/Debug
此 WPF 应用程序的文件夹中,调用 dll 中的 write 方法会在同一文件夹中生成一个文本文件。此外,from the same folder
我可以使用 dll 的 read 方法来读取文本文件。
但是,当我从我的 ASP.NET Web 应用程序调用 Dll 方法时,生成的文件会转到其他目录(很可能是因为 dll 被加载到其他地方执行),我无法找到生成的文件的位置(没有任何错误)
类似于桌面应用程序,是否有某种方式将 fie 写入 bin 文件夹本身,以便我可以从 bin 文件夹本身读取?
示例代码:
.cpp 文件
extern "C" D_API int Write1()
{
ofstream myfile;
myfile.open ("example.txt");
myfile << "Writing this to a file.\n";
myfile.close();
return 1;
}
extern "C" D_API char* Read1()
{
ifstream myReadFile;
myReadFile.open("test.txt");
char output[100];
if (myReadFile.is_open())
{
while (!myReadFile.eof())
{
myReadFile >> output;
}
}
return output;
}
C# .aspx.cs
[DllImport("Testing1.dll", EntryPoint = "fnTest", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern int Write1();
[DllImport("Testing1.dll", EntryPoint = "ReadTest", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern StringBuilder Read1();