我一直在尝试通过我的 ASP.NET 网站通过 P/Invoke 写入和读取文件。在网站中执行此操作时,我面临着文件写入/读取位置的问题dlls
。我试图用下面的例子来解释这个问题:
.cpp 文件(包含读写函数)
extern "C" TEST_API int fnTest(char* fileDir)
{
ofstream myfile;
myfile.open (strcat(fileDir, "test.txt"));
myfile << "Writing this to a file.\n";
myfile.close();
}
extern "C" TEST_API char* fnTest1(char* fileDir)
{
ifstream myReadFile;
myReadFile.open(strcat(fileDir, "test1.txt"));
char output[100];
if (myReadFile.is_open()) {
while (!myReadFile.eof()) {
myReadFile >> output;
return output;
}
发布网站的构建事件以将 dll 从上面的 C++ 项目复制到网站的bin
文件夹
Default.aspx.cs - C#
Dll 函数
public static class Functions(){
DllImport[("Test1.dll", EntryPoint="fnTest", CharSet=CharSet.Ansi]
public static extern int fnTest(string dir);
DllImport[("Test1.dll", EntryPoint="fnTest1", CharSet=CharSet.Ansi]
public static extern StringBuilder fnTest1(string dir);
}
Page_Load 事件
string direc = AppDomain.CurrentDomain.BaseDirectory + "bin\\";
string txt1 = Functions.fnTest(direc).ToString(); //failing here - keeps on loading the page forever
string txt2 = Functions.fnTest(direc).ToString(); //failing here - keeps on loading the page forever
如果我在桌面应用程序中尝试相同的 Page_Load 代码并将direc
其设置为项目输出的当前目录,则一切正常。只是在网站的情况下要写入或读取文件的目录有点混乱,我真的不知道如何纠正这个问题并让它工作。建议将不胜感激。