开始了带界面的VST的编写。遇到问题:
1>------ 已启动生成: 项目: Comparoma, 配置: Debug Win32 ------
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall ACompressor::setProgram(int)" (?setProgram@ACompressor@@UAEXH@Z)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall ACompressor::setProgramName(char *)" (?setProgramName@ACompressor@@UAEXPAD@Z)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall ACompressor::getProgramName(char *)" (?getProgramName@ACompressor@@UAEXPAD@Z)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall ACompressor::setParameter(int,float)" (?setParameter@ACompressor@@UAEXHM@Z)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual float __thiscall ACompressor::getParameter(int)" (?getParameter@ACompressor@@UAEMH@Z)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall ACompressor::getParameterName(int,char *)" (?getParameterName@ACompressor@@UAEXHPAD@Z)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall ACompressor::getParameterLabel(int,char *)" (?getParameterLabel@ACompressor@@UAEXHPAD@Z)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall ACompressor::getParameterDisplay(int,char *)" (?getParameterDisplay@ACompressor@@UAEXHPAD@Z)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual bool __thiscall ACompressor::getEffectName(char *)" (?getEffectName@ACompressor@@UAE_NPAD@Z)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual bool __thiscall ACompressor::getVendorString(char *)" (?getVendorString@ACompressor@@UAE_NPAD@Z)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual bool __thiscall ACompressor::getProductString(char *)" (?getProductString@ACompressor@@UAE_NPAD@Z)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual bool __thiscall ACompressor::getProgramNameIndexed(int,int,char *)" (?getProgramNameIndexed@ACompressor@@UAE_NHHPAD@Z)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall ACompressor::getVendorVersion(void)" (?getVendorVersion@ACompressor@@UAEHXZ)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual enum VstPlugCategory __thiscall ACompressor::getPlugCategory(void)" (?getPlugCategory@ACompressor@@UAE?AW4VstPlugCategory@@XZ)
1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall ACompressor::resume(void)" (?resume@ACompressor@@UAEXXZ)
1>vstplugmain.obj : error LNK2019: 无法解析的外部符号 "class AudioEffect * __cdecl createEffectInstance(int (__cdecl*)(struct AEffect *,int,int,int,void *,float))" (?createEffectInstance@@YAPAVAudioEffect@@P6AHPAUAEffect@@HHHPAXM@Z@Z),该符号在函数 _VSTPluginMain 中被引用
1>F:\Documents\Visual Studio 2013\Projects\Comparoma\Debug\Comparoma.dll : fatal error LNK1120: 16 个无法解析的外部命令
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
是我声明了虚函数又不实现产生的。
还有一个错误:
// ACompressor* createEffectInstance(audioMasterCallback audioMaster)
AudioEffect* createEffectInstance(audioMasterCallback audioMaster)
{
return new ACompressor(audioMaster);
}
还有导出来dll不被识别的问题,查到2点多没查出来,今天继续查,原来是模块定义文件没有设置。在工程属性→链接器→输入 里面,模块定义文件配置为.\vstplug.def。太惨了。
下一步将加入控件,对效果器参数进行修改。