I just started to develop plug-ins for after effects because of a big project in my company, and I experience an issue when I try to use the plug-in I developped whith Visual Studio 2012 and the AE CS6 SDK. AE can't find the entrypoint of the plug-in. Here is the code of my project, if it can help:
#include "Warbler.h"
static PF_Err About (
PF_InData *in_data,
PF_OutData *out_data,
PF_ParamDef *params[],
PF_LayerDef *output )
{
PF_SPRINTF(out_data->return_msg, "%s,v%d.%d\r%s",
NAME, MAJOR_VERSION, MINOR_VERSION, DESCRIPTION);
return PF_Err_NONE;
}
static PF_Err GlobalSetup (
PF_InData *in_data,
PF_OutData *out_data,
PF_ParamDef *params[],
PF_LayerDef *output )
{
PF_Err err = PF_Err_NONE;
// We need to let AE know what version we are:
out_data->my_version =
PF_VERSION(MAJOR_VERSION,
MINOR_VERSION,
BUG_VERSION,
STAGE_VERSION,
BUILD_VERSION);
// We are going to iterate over the output extent,
// so we need to specify that flag...
out_data->out_flags |=
PF_OutFlag_USE_OUTPUT_EXTENT;
return err;
}
static PF_Err ParamsSetup (
PF_InData *in_data,
PF_OutData *out_data,
PF_ParamDef *params[],
PF_LayerDef *output)
{
PF_Err err = PF_Err_NONE;
PF_ParamDef def;
// Always clear out the PF_ParamDef
// before adding your parameters.
AEFX_CLR_STRUCT(def);
// Create the LAYER parameter...
def.param_type = PF_Param_LAYER;
PF_STRCPY(def.name, "Displacement Layer:");
def.u.ld.dephault = PF_LayerDefault_NONE;
if (err = PF_ADD_PARAM(in_data, -1, &def))
return err;
// Create the ANGLE parameter...
def.param_type = PF_Param_ANGLE;
PF_STRCPY(def.name, "Angle of Displacement");
def.flags = 0;
def.u.fd.value_str[0] =
def.u.fd.value_desc[0] = '\0';
def.u.fd.value = def.u.fd.dephault = 0;
def.u.fd.valid_min =
def.u.fd.slider_min = ANGLE_MIN;
def.u.fd.valid_max =
def.u.fd.slider_max = ANGLE_MAX;
def.u.fd.precision = 0;
def.u.fd.display_flags = 0;
if (err = PF_ADD_PARAM(in_data, -1, &def))
return err;
// Create the DISPLACEMENT SLIDER...
def.param_type = PF_Param_FIX_SLIDER;
PF_STRCPY(def.name, "Amount of Displacement");
def.flags = 0;
def.u.fd.value_str[0] =
def.u.fd.value_desc[0] = '\0';
def.u.fd.value =
def.u.fd.dephault = SHIFT_BLEND_DFLT;
def.u.fd.valid_min =
def.u.fd.slider_min = SHIFT_BLEND_MIN;
def.u.fd.valid_max =
def.u.fd.slider_max = SHIFT_BLEND_MAX;
def.u.fd.precision = 1;
def.u.fd.display_flags = 1; // display as percent
if (err = PF_ADD_PARAM(in_data, -1, &def))
return err;
// GAMMA slider...
AEFX_CLR_STRUCT(def);
def.param_type = PF_Param_FIX_SLIDER;
PF_STRCPY(def.name, "Source Gamma");
def.u.fd.value_str[0] =
def.u.fd.value_desc[0] = '\0';
def.u.fd.value =
def.u.fd.dephault = BIAS_DFLT;
def.u.fd.valid_min =
def.u.fd.slider_min = BIAS_MIN;
def.u.fd.slider_max = BIAS_MAX;
def.u.fd.valid_max = BIAS_BIG_MAX;
def.u.fd.precision = 1;
def.u.fd.display_flags = 0;
if (err = PF_ADD_PARAM(in_data, -1, &def))
return err;
// Create the FIXED SLIDER parameter...
def.param_type = PF_Param_FIX_SLIDER;
PF_STRCPY(def.name, "Blend With Original");
def.flags = 0;
def.u.fd.value_str[0] =
def.u.fd.value_desc[0] = '\0';
def.u.fd.value =
def.u.fd.dephault = SHIFT_BLEND_DFLT;
def.u.fd.valid_min =
def.u.fd.slider_min = SHIFT_BLEND_MIN;
def.u.fd.valid_max =
def.u.fd.slider_max = SHIFT_BLEND_MAX;
def.u.fd.precision = 1;
def.u.fd.display_flags = 1; // display as percent
if (err = PF_ADD_PARAM(in_data, -1, &def))
return err;
// Set number of parameters...
out_data->num_params = SHIFT_NUM_PARAMS;
return err;
}
static PF_Err GlobalSetdown (
PF_InData *in_data,
PF_OutData *out_data,
PF_ParamDef *params[],
PF_LayerDef *output )
{
return PF_Err_NONE;
}
static PF_Err Render (
PF_InData *in_data,
PF_OutData *out_data,
PF_ParamDef *params[],
PF_LayerDef *output )
{
PF_Err err = PF_Err_NONE;
return err;
}
PF_Err EntryPointFunc (
PF_Cmd cmd,
PF_InData *in_data,
PF_OutData *out_data,
PF_ParamDef *params[],
PF_LayerDef *output,
void *extra )
{
PF_Err err = PF_Err_NONE;
switch (cmd) {
case PF_Cmd_ABOUT:
err = About(in_data,out_data,params,output);
break;
case PF_Cmd_GLOBAL_SETUP:
err = GlobalSetup(in_data,out_data,params,output);
break;
case PF_Cmd_PARAMS_SETUP:
err = ParamsSetup(in_data,out_data,params,output);
break;
case PF_Cmd_GLOBAL_SETDOWN:
err = GlobalSetdown(in_data,out_data,params,output);
break;
case PF_Cmd_RENDER:
err = Render(in_data,out_data,params,output);
break;
default:
break;
}
return err;
}
This plug-in is made by following the tutorial of Kas Thomas.
Any idea of where can be the problem? I tried to find some doc on the PiPLs but so far, nothing really interesting...