我正在为项目使用control library用于Visual C ++,如果我在x32版本中构建它,它将非常完美。对于我的项目,我需要它是x64,所以我尝试在Visual Studio中使用x64编译它。但是我收到了一些警告:
这是第17行。
rv = midiInOpen(&handle_, device_idx, (DWORD)(void*)midi_in_proc_static_, (DWORD_PTR)this, CALLBACK_FUNCTION);
如何将其更改为x64版本?我是否必须在Project Proberties中更改某些内容?
答案 0 :(得分:1)
使用现代的Windows API,您应该使用DWORD_PTR进行此类操作,根据构建设置,它将为32位或64位。如果库指定DWORD并且您无法重建,则可能无法在64位版本中使用它。
答案 1 :(得分:1)
我很确定你做错了。关于const fs = require('fs');
// read/process package.json
const file = './package.json';
let pkg = JSON.parse(fs.readFileSync(file).toString());
// at this point you should have access to your ENV vars
pkg.proxy = `${process.env.HOST}:${process.env.PORT}`;
// the 2 enables pretty-printing and defines the number of spaces to use
fs.writeFileSync(pkg, JSON.stringify(file, null, 2));
功能的Here's the MSDN documentation。
它的原型是:
midiInOpen()
因此,将MMRESULT midiInOpen(
LPHMIDIIN lphMidiIn,
UINT uDeviceID,
DWORD_PTR dwCallback, // This is DWORD_PTR not DWORD
DWORD_PTR dwCallbackInstance,
DWORD dwFlags
);
转换为void*
并不是预期的类型是没有意义的。您应该将其直接转换为DWORD
。