plugin_action_links_{$plugin_file} hook not in the main plugin file

You can simply store the basename in a variable in the main file and reference that variable in the admin file.

If you are using classes, which I determine from your example code, you can simply create a static property in you main class and reference that in the admin class:

class My_Plugin {
    static $basename = null;

    public function __construct {
        $this->basename = plugin_basename(__FILE__);
    }
}

class My_Plugin_Admin {
    public function change_action_links() {
        add_filter( 'plugin_action_links_' . My_Plugin::$basename,  array( $this, 'add_action_links' ) );
    }
}