请教
我在atl工程文件中通过_Module.GetModuleInstance()得到模块的HINSTANCE ;
然后通过GetModuleFileName得到这个模块当前所在路径
怎么最后得到确跟实际的不一样
假设当前模块的实际路径为
d:\工作项目\视频监控相关模块\监控采集卡(com)\解决方案\test\Debug\AIS_Algorithms.dll
而得到的确是
d:\工作项目\视频监~1\监控采~3\解决方案\test\Debug\AIS_AL~1.DLL
请问这是什么回事?
代码如下
HINSTANCE ins = _Module.GetModuleInstance();
TCHAR moduleName[MAX_PATH] = {0};
::GetModuleFileName( ins , moduleName , sizeof(moduleName) );

解决方案 »

  1.   

    是不是用了short name 短名
      

  2.   

    我什么都没有用啊
    如果这样
    TCHAR moduleName[MAX_PATH] = {0}; 
    ::GetModuleFileName( NULL, moduleName , sizeof(moduleName) );
    得到路径就没有任何问题
    只不过这得到是.exe的全路径即为
    d:\工作项目\视频监控相关模块\监控采集卡(com)\解决方案\test\Debug\test.exe
    而如果用
    HINSTANCE ins = _Module.GetModuleInstance();
    TCHAR moduleName[MAX_PATH] = {0}; 
    ::GetModuleFileName( ins , moduleName , sizeof(moduleName) );
    我要得到的是
    这段代码得到dll全路径结果就
    d:\工作项目\视频监~1\监控采~3\解决方案\test\Debug\AIS_AL~1.DLL请问一下
    我要得到
    d:\工作项目\视频监控相关模块\监控采集卡(com)\解决方案\test\Debug\AIS_Algorithms.dll 
    这样子的怎么弄?
      

  3.   

    ::GetModuleFileName( NULL, moduleName , sizeof(moduleName) ); 
    把NULL换成你dll的句柄。就是DllMain的第一个参数。
      

  4.   

    HINSTANCE ins = _Module.GetModuleInstance(); 
    TCHAR moduleName[MAX_PATH] = {0}; 
    ::GetModuleFileName( ins , moduleName , sizeof(moduleName) ); 
     _Module.GetModuleInstance(); 这个不就得到的是DLL的句柄
    高手再解答一下
      

  5.   

    试试如下代码:
    char _strPath[MAX_PATH] = "\0";
    ::GetModuleFileName(NULL, _strPath, MAX_PATH); AfxMessageBox(_strPath); char _strLongPath[MAX_PATH] = "\0";
    GetLongPathName(_strPath, _strLongPath, MAX_PATH); AfxMessageBox(_strLongPath);
      

  6.   

    呵呵
    谢谢上楼的回答
    不过不是我想要的结果
    你那个还是得到exe的全路径
    不是exe调用的dll路径
      

  7.   


    HINSTANCE ins = _Module.GetModuleInstance(); 
    TCHAR moduleName[MAX_PATH] = {0}; 
    ::GetModuleFileName( ins , moduleName , sizeof(moduleName) ); TCHAR _strLongPath[MAX_PATH] = "\0";
    ::GetLongPathName(moduleName, _strLongPath, MAX_PATH);你还真要送到嘴边。
      

  8.   

    看看你的项目设置,
    你的工作目录和exe文件的输出目录在哪里??