我真的不知道为什么当我在调试模式下运行时,链接器有时会 Select 自动搜索以‘d’或‘_d’为后缀的库.我正在try 在Windows中从C++调用python模块.我在Visual Studio 2022中创建了一个空白C++项目,并编写了以下代码:
#define PY_SSIZE_T_CLEAN
#include <Python.h>
#include <iostream>
int main()
{
std::cout << "hello world";
}
我的计算机上安装了Anaconda3,C:\ProgramData\Anaconda3\include
中有Python.h
个生命,所以我将其添加到我的包含路径中.我的调试版本的输出是LNK1
.哎呀!我一定是忘了将链接器指向来自pythonAPI的静态库.但是等等!我在python39.lib
cannot open file python39_d.libC:\ProgramData\Anaconda3\libs
找到的只有python39.lib
.Python 忘了把我的python39_d.lib
文件寄给我了,因为某种原因,它会自动链接到这个文件.愚蠢的解决办法是复制并重命名副本,使其符合链接器的期望,但我宁愿只链接到非调试库.
但如何做到呢?是不是Python.h
里面的#pragma
导致了这一切?对于一个python发行版来说,发布一个没有变通方法就不能工作的API是一个残酷的把戏.或者是我不知道的某个晦涩难懂的Visual Studio设置?