C++ Win32
テキストファイルを読み書きするプログラムがあります。このC++プログラムはdllを生成し、ASP.NETWebアプリケーションでこの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が別の場所にロードされているため)、この生成されたファイルの移動先を見つけることができません(エラーなし)
デスクトップアプリケーションと同様に、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();