CppSharp icon indicating copy to clipboard operation
CppSharp copied to clipboard

The functions are lost during conversion.

Open Aloento opened this issue 4 years ago • 0 comments

Brief Description

When I was converting the following code, I found that only the functions of int were converted, while other functions such as path_t were not converted.

OS: Windows 10 20H2

Used headers
#include "filesystem_utils.h"

#ifndef WAIFU2X_NCNN_VULKAN_WRAPPER_H
#define WAIFU2X_NCNN_VULKAN_WRAPPER_H

#endif //WAIFU2X_NCNN_VULKAN_WRAPPER_H
class _declspec(dllexport) Waifu2xWrapper
{
public:
    ~Waifu2xWrapper();
    Waifu2xWrapper();
    void setInput(path_t input);
    void setOutput(path_t output);
    void setNoise(int p_noise);
    void setScale(int p_scale);
    void setTilesize(std::vector<int> size);
    void setModel(path_t p_model);
    void setGpu(std::vector<int> gpu);
    void setJobsLoad(int load);
    void setJobProc(std::vector<int> proc);
    void setJobSave(int save);
    void setTtaMode(int mode);
    void setFormat(path_t p_format);
    int execute();

private:
    path_t inputpath;
    path_t outputpath;
    int noise;
    int scale;
    std::vector<int> tilesize;
    path_t model;
    std::vector<int> gpuid;
    int jobs_load;
    std::vector<int> jobs_proc;
    int jobs_save;
    int verbose;
    int tta_mode;
    path_t format;
};

Used settings
    class Cpp : ILibrary
    {
        public override void Postprocess(Driver driver, ASTContext ctx)
        {
        }

        public override void Preprocess(Driver driver, ASTContext ctx)
        {
        }

        public override void Setup(Driver driver)
        {
            var options = driver.Options;
            options.GeneratorKind = GeneratorKind.CSharp;
            var module = options.AddModule("Waifu2x");
            module.IncludeDirs.Add(@"C:\Codes\C\Waifu2x-Vulkan-Library\src");
            module.Headers.Add("wrapper.h");
            module.LibraryDirs.Add(@"C:\Codes\C#\Waifu2x-Vulkan-CSharp");
            module.Libraries.Add("Waifu2x-Vulkan-Library.dll");
        }

        public override void SetupPasses(Driver driver)
        {
            driver.Context.TranslationUnitPasses.RenameDeclsUpperCase(RenameTargets.Any);
            driver.Context.TranslationUnitPasses.AddPass(new FunctionToInstanceMethodPass());
        }
    }

Target: MSVC

Stack trace or incompilable generated code
        [StructLayout(LayoutKind.Sequential, Size = 232)]
        public partial struct __Internal
        {
            internal global::Std.BasicString.__Internalc__N_std_S_basic_string__W___N_std_S_char_traits__W___N_std_S_allocator__W inputpath;
            internal global::Std.BasicString.__Internalc__N_std_S_basic_string__W___N_std_S_char_traits__W___N_std_S_allocator__W outputpath;
            internal int noise;
            internal int scale;
            internal global::Std.Vector.__Internalc__N_std_S_vector__I___N_std_S_allocator__I tilesize;
            internal global::Std.BasicString.__Internalc__N_std_S_basic_string__W___N_std_S_char_traits__W___N_std_S_allocator__W model;
            internal global::Std.Vector.__Internalc__N_std_S_vector__I___N_std_S_allocator__I gpuid;
            internal int jobs_load;
            internal global::Std.Vector.__Internalc__N_std_S_vector__I___N_std_S_allocator__I jobs_proc;
            internal int jobs_save;
            internal int verbose;
            internal int tta_mode;
            internal global::Std.BasicString.__Internalc__N_std_S_basic_string__W___N_std_S_char_traits__W___N_std_S_allocator__W format;

            [SuppressUnmanagedCodeSecurity, DllImport("Waifu2x-Vulkan-Library", EntryPoint = "??0Waifu2xWrapper@@QEAA@XZ", CallingConvention = __CallingConvention.Cdecl)]
            internal static extern __IntPtr ctor(__IntPtr __instance);

            [SuppressUnmanagedCodeSecurity, DllImport("Waifu2x-Vulkan-Library", EntryPoint = "??0Waifu2xWrapper@@QEAA@AEBV0@@Z", CallingConvention = __CallingConvention.Cdecl)]
            internal static extern __IntPtr cctor(__IntPtr __instance, __IntPtr _0);

            [SuppressUnmanagedCodeSecurity, DllImport("Waifu2x-Vulkan-Library", EntryPoint = "??1Waifu2xWrapper@@QEAA@XZ", CallingConvention = __CallingConvention.Cdecl)]
            internal static extern void dtor(__IntPtr __instance);

            [SuppressUnmanagedCodeSecurity, DllImport("Waifu2x-Vulkan-Library", EntryPoint = "?setNoise@Waifu2xWrapper@@QEAAXH@Z", CallingConvention = __CallingConvention.Cdecl)]
            internal static extern void SetNoise(__IntPtr __instance, int p_noise);

            [SuppressUnmanagedCodeSecurity, DllImport("Waifu2x-Vulkan-Library", EntryPoint = "?setScale@Waifu2xWrapper@@QEAAXH@Z", CallingConvention = __CallingConvention.Cdecl)]
            internal static extern void SetScale(__IntPtr __instance, int p_scale);

            [SuppressUnmanagedCodeSecurity, DllImport("Waifu2x-Vulkan-Library", EntryPoint = "?setJobsLoad@Waifu2xWrapper@@QEAAXH@Z", CallingConvention = __CallingConvention.Cdecl)]
            internal static extern void SetJobsLoad(__IntPtr __instance, int load);

            [SuppressUnmanagedCodeSecurity, DllImport("Waifu2x-Vulkan-Library", EntryPoint = "?setJobSave@Waifu2xWrapper@@QEAAXH@Z", CallingConvention = __CallingConvention.Cdecl)]
            internal static extern void SetJobSave(__IntPtr __instance, int save);

            [SuppressUnmanagedCodeSecurity, DllImport("Waifu2x-Vulkan-Library", EntryPoint = "?setTtaMode@Waifu2xWrapper@@QEAAXH@Z", CallingConvention = __CallingConvention.Cdecl)]
            internal static extern void SetTtaMode(__IntPtr __instance, int mode);

            [SuppressUnmanagedCodeSecurity, DllImport("Waifu2x-Vulkan-Library", EntryPoint = "?execute@Waifu2xWrapper@@QEAAHXZ", CallingConvention = __CallingConvention.Cdecl)]
            internal static extern int Execute(__IntPtr __instance);
        }

Aloento avatar May 18 '21 03:05 Aloento