2017-05-27 96 views
-3

如何在Windows PC上获取DLL的完整路径?它只是显示一个空白控制台程序,没有别的GetFullPathNameA不返回DLL的路径

代码看起来像这样

#include <stdio.h> 
#include <stdlib.h> 
#include <windows.h> 

int main() 
{ 
    TCHAR full_path[MAX_PATH]; 
    LPSTR info = GetFullPathName(TEXT("freddie.dll"), MAX_PATH, full_path, NULL); 
    printf("%s",info); 
} 
+0

为什么要使用TCHAR?为什么不在所有地方都使用Unicode? –

+0

@DietrichEpp,崩溃。 – RealMary

+0

“警告C4047:'初始化':'LPSTR'与'DWORD'的间接程度不同' –

回答

0

正如评论所说,你的返回类型是错误的。它返回一个DWORD,它指示复制到给定缓冲区中的字符串的长度,而不计算终止的'\0'字符。 GetFullPathName文档非常清楚。还有一个使用该功能的例子。

即使您将您的退货类型更改为DWORDprintf应如何使用格式说明符%s打印DWORD

所以这里是一个工作的例子作为C代码,因为你的代码是C,即使你的标签包含C++。

#include <stdio.h> 
#include <stdlib.h> 
#include <windows.h> 

int main() 
{ 
    TCHAR full_path[MAX_PATH]; 
    DWORD string_len = GetFullPathName (TEXT("freddie.dll"), 
             MAX_PATH, 
             full_path, 
             NULL); 
    printf ("Length of full path string: %lu\n" 
      "Full path: '%s'", 
      (unsigned long) string_len, 
      full_path); 
} 
+0

嗨@RealMary如果这个答案解决了你的问题,请点击[接受它](https://meta.stackexchange.com/q/5234/179419)复选标记。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。没有义务这样做。 –