使用Pycharm开发,项目虚拟环境,调用DLL文件。在DLL文件中有如下代码:
extern "C" __declspec(dllexport) int get_path(TCHAR *res)
{
setlocale(LC_ALL, "");
//TCHAR szPath[MAX_PATH];
GetModuleFileName(NULL, res, MAX_PATH);
return 0;
}
在Python中调用:
from ctypes import *
path="C:\\Users\\sean\\source\\repos\\test_path\\x64\\Debug\\{}".format("test_dll.dll")
dll = windll.LoadLibrary(path)
c_array = c_wchar * 1024
psr=c_array()
c=dll.get_path(pointer(psr))
print("path1 ",psr.value)
import os,sys
exe_dir = os.path.split(sys.executable)[0]
print("path2 ",exe_dir)
执行结果:
path1 C:\ProgramFilesUser\python38\python.exe
path2 C:\Users\sean\Documents\CodeWorkSpace\ARTest_dev\venv\Scripts
我想问为什么函数GetModuleFileName获得的调用程序路径(也就是Python路径)会是系统中python路径而不是虚拟环境的路径?