搜尋

首頁  >  問答  >  主體

请问 c#如何调用c++的dll? 就比如下面这个

CString GetCurrentDir(void)
{
    TCHAR sDrive[_MAX_DRIVE];
    TCHAR sDir[_MAX_DIR];
    TCHAR sFilename[_MAX_FNAME];
    TCHAR Filename[_MAX_FNAME];
    TCHAR sExt[_MAX_EXT];
    
    GetModuleFileName(AfxGetInstanceHandle(),Filename,_MAX_PATH);
    _tsplitpath(Filename,sDrive,sDir,sFilename,sExt);
    CString HomeDir(CString(sDrive)+CString(sDir));    
    if (HomeDir.GetAt(HomeDir.GetLength()-1)!=_T('\\'))
        HomeDir+=_T('\\');
    return HomeDir;
}


    char path[256];
    sprintf(path, "%splaylist1.txt", GetCurrentDir());
    result = AddWindowEx(iCom, iAddress, iSchedule, 0, 0, 128, 32, path);
    if (!result)
        AfxMessageBox("设置播放数据playlist1.txt失败");

我怎么调用AddWindowEx 这个方法
主要是 sprintf(path, "%splaylist1.txt", GetCurrentDir()); 这一句是干嘛的 百度了一圈也没看到答案 有没有c++大神 帮忙看看

怪我咯怪我咯2807 天前722

全部回覆(4)我來回復

  • 黄舟

    黄舟2017-04-17 13:56:23

    sprintf 可以用 C# 的 string.Format() 代替,如果用 C#6 可以直接寫模板字串 $"",GetCurrentDir 應該可以用 Environment.CurrentDirectory 代替。

    var path = string.Format("{0}playlist1.txt", GetCurrentDir());
    path = $"{GetCurrentDir()playlist1.txt}";

    AddWindowEx 是個自訂函數嗎?

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 13:56:23

    c#只能透過平台呼叫c函數

    回覆
    0
  • 黄舟

    黄舟2017-04-17 13:56:23

    using System.Runtime.InteropServices;
    [DLLImport("xxx.dll")]
    public static extern 返回值 方法名(参数);

    然後直接呼叫方法即可

    回覆
    0
  • 黄舟

    黄舟2017-04-17 13:56:23

    字串格式化函數,百科全書有詞條

    回覆
    0
  • 取消回覆