У меня есть обычная DLL-библиотека C ++ MFC, которую я вызываю со следующими данными:
public static class Access3rdPartyDLL
{
public static string FilePath;
[DllImport("3rdparty.dll")]
// I have also tried LPWStr
public static extern long Download([MarshalAs(UnmanagedType.LPStr)]string sDownloadFile,
int iDeviceNum
...);
public static long DownloadToDevice()
{
long result;
string FilePath = "C:\\myfile.txt"
result = Download(FilePath, 1, ...);
// check if success or error
if(result > 0)
...
}
}
Я получаю сообщение об ошибке из DLL, в котором говорится: «Файл:« C: \ myfile.txt »не найден. Но его нет ...
Я также пытался использовать StringBuilder
, но это также не удается.
Может ли это быть проблемой с DLL или я что-то не так делаю?
Я нашел этот текущий код здесь: SO: эквивалентный символ * в C #
РЕДАКТИРОВАТЬ: я делал это в C ++ раньше, и этот код работает:
extern "C" __declspec(dllimport) HRESULT __stdcall Download(char* sDownloadFile, int ...
с которым я звоню:
HRESULT result = Download(file_for_download, 1, .. // where file_for_download is a char*