zoukankan      html  css  js  c++  java
  • (UE4) 动态加载DLL

    目前还没有实现,实在搞不懂为什么,大概代码如下:

    //--------------------------------------------------------------------------------------
        FString filePath = FPaths::Combine(*FPaths::GameDir(), TEXT("MFCDLL/"),TEXT("OpenFile.dll"));
        typedef FCString(WINAPI *getPath)(void);
        FCString str;
        if (FPaths::FileExists(filePath))
        {
            void *DLLHandle;
            DLLHandle = FPlatformProcess::GetDllHandle(*filePath); // Retrieve the DLL.
            if (DLLHandle != NULL)
            {
                getPath getFilePath=NULL;
                FString procName = "getFilePath";
                getFilePath=(getPath)FPlatformProcess::GetDllExport(DLLHandle, *procName);
                str=getFilePath();
            }
        }
        //-----------------------------------------------------------------------------
    View Code

     有一个问题是 自从VS2005以后  新建的工程默认都是采用UNICODE码 来生成的,这时与其他采用别的编码方式的程序进行交互时就会出现错误!

    比如,MFC DLL文件 返回int值给UE4  可以正常返回,但是返回 char*  或者是CString就会出错!

    还好  有位大神写了这个东西,使用这个 将CString .getbuffer(0)转换为char*  就可以在UE4中调用了!

    //将单字节char*转化为宽字节wchar_t*  
    wchar_t* AnsiToUnicode( const char* szStr )  
    {  
        int nLen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szStr, -1, NULL, 0 );  
        if (nLen == 0)  
        {  
            return NULL;  
        }  
        wchar_t* pResult = new wchar_t[nLen];  
        MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szStr, -1, pResult, nLen );  
        return pResult;  
    }  
      
    //将宽字节wchar_t*转化为单字节char*  
    inline char* UnicodeToAnsi( const wchar_t* szStr )  
    {  
        int nLen = WideCharToMultiByte( CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL );  
        if (nLen == 0)  
        {  
            return NULL;  
        }  
        char* pResult = new char[nLen];  
        WideCharToMultiByte( CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL );  
        return pResult;  
    }  

    http://blog.csdn.net/hellward/article/details/5364927   原文地址!

    永远不会忘记  2015年的清明节  第一天  发着烧、去公司解决打开文件对话框的问题,坐的腰都疼了,都快要放弃的时候,选择了坚持一下下,结果就遇见了转折。有时候事情就是这样,多坚持一下,也许就会出现黎明。

  • 相关阅读:
    DTD
    JVM-学习笔记持续更新
    MySQL用limit代替SQL Server :top
    正则表达式&&Java文本复杂操作
    JVM核心——JVM运行和类加载全过程
    java动态编译——tools.jar问题
    java-基础
    github for windows 简单的客户端托管代码
    【javascript dom读书笔记】 第九章 CSS-DOM
    【精通css读书笔记】 第八章 布局
  • 原文地址:https://www.cnblogs.com/tengpan-cn/p/4392436.html
Copyright © 2011-2022 走看看