当我在C ++中包含cstdlib
时,我感到很恐怖。
无法打开' malloc.c':找不到文件(文件:///build/glibc-bfm8X4/glibc-2.23/malloc/malloc.c)。
错误来自VS代码窗口的顶部。 documentation
(调试期间发生错误。)
这里有一些代码:
#include <cstdlib>
#include <portaudio.h>
//...
static int paCallback( const void *inputBuffer, void *outputBuffer,
unsigned long framesPerBuffer,
const PaStreamCallbackTimeInfo* timeInfo,
PaStreamCallbackFlags statusFlags,
void *userData )
{
/* Cast data passed through stream to our structure. */
paTestData *data = (paTestData*)userData;
float *out = (float*)outputBuffer;
unsigned int i;
(void) inputBuffer; /* Prevent unused variable warning. */
for( i=0; i<framesPerBuffer; i++ )
{
*out++ = data->left_phase; /* left */
*out++ = data->right_phase; /* right */
float currentSample = 0;
char *sampleData = new char[4];
for(int j = 0; j < 4; j++)
{
sampleData[j] = currentBuffer[¤tIndex + j];
}
currentSample = (float)atof(sampleData); //cstdlib is included to use atof
//gets audio sample data and forwards to PortAudio
data->left_phase = currentSample;
data->right_phase = currentSample;
currentIndex += 4;
}
return 0;
}
我使用Linux Mint 81.1如果有帮助的话。
答案 0 :(得分:0)
我已经通过以下方式解决了这个问题.. 我的错误是 “无法打开‘libc-start.c’:找不到文件(file:///build/glibc-OTsEL5/glibc-2.27/csu/libc-start.c” 所以我在根目录下创建一个目录
$cd /
$sudo mkdir build
$cd build
$sudo mkdir glibc-OTsEL5
$cd glibc-OTsEL5
然后从网上下载glibc
$sudo wget http://ftp.gnu.org/gnu/glibc/glibc-2.27.tar.gz
然后解压
$sudo tar -xzvf glibc-2.27.tar.gz
一切似乎都很好
此解决方案来自https://github.com/microsoft/vscode-cpptools/issues/811#issuecomment-406544778
答案 1 :(得分:0)
我遇到了同样的问题。问题是我没有编译带有调试标志-g的cpp文件.......当我重新编译包含malloc和reinterpret_cast的cpp文件时,问题消失了。 但我错了。真正的解决办法是不要走malloc所在的那一行,否则需要malloc.c的源文件。 参见,https://github.com/microsoft/vscode-cpptools/issues/811#issuecomment-559085447