mono / CppSharp

Tools and libraries to glue C/C++ APIs to high-level languages
MIT License
3.15k stars 518 forks source link

Can't use skypjack/entt with CppSharp #1872

Closed oistikbal closed 2 months ago

oistikbal commented 2 months ago

I use skypjack/entt and try to import my api to c# but i get errors.

OS: Windows 11

Used headers

include "..\Components\common.h" -> "entt\src\entt\entt.hpp"

include "api.h"

namespace furnace::api::entity { FURNACE_API uint32_t create(); };

\\\

pragma once

include "....\ThirdParty\entt\single_include\entt\entt.hpp"

even single an .h file with this cause errors.

Used settings
        var options = driver.Options;
        driver.ParserOptions.Setup(TargetPlatform.Windows);
        driver.ParserOptions.MicrosoftMode = true;
        driver.ParserOptions.LanguageVersion = CppSharp.Parser.LanguageVersion.CPP20;
        driver.ParserOptions.EnableRTTI = true;
        driver.Setup();

Target: MSVC

Stack trace or incompilable generated code

2>Build Engine API 2>---Generating API--- 2>API Path: D:\Workspace\Cpp\Furnace\FurnaceEngine\Api 2>Output Path: D:\Workspace\Cpp\Furnace\FurnaceEditor\Api 2>Bin Path: D:\Workspace\Cpp\Furnace\bin\Debug 2>-------------------- 2>CPP20 2>Parsing libraries... 2>Parsing code... 2>Error parsing 'entity_api.h' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(88,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(95,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(363,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(381,29): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(381,41): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(390,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(390,22): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(415,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(424,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(424,22): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(424,34): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(437,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(437,22): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(450,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(463,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(472,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(472,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(494,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(494,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(504,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(526,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(526,22): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(555,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(563,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(563,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(572,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(584,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(584,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(608,50): error : no template named 'is_invocable' in namespace 'std'; did you mean '_Is_invocable_r'? 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(617,56): error : no template named 'is_invocable' in namespace 'std'; did you mean '_Is_invocable_r'? 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(639,62): error : no template named 'is_invocable_r' in namespace 'std'; did you mean '_Is_invocable_r'? 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(913,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/type_traits.hpp(916,29): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/compressed_pair.hpp(193,63): error : no template named 'is_nothrow_swappable_v' in namespace 'std'; did you mean '_Is_nothrow_swappable'? 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/compressed_pair.hpp(193,98): error : expected '(' for function-style cast or type construction 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/compressed_pair.hpp(193,106): error : no template named 'is_nothrow_swappable_v' in namespace 'std'; did you mean '_Is_nothrow_swappable'? 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/compressed_pair.hpp(193,141): error : expected '(' for function-style cast or type construction 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/compressed_pair.hpp(233,1): error : a type specifier is required for all declarations 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/../core/memory.hpp(159,18): error : no member named 'apply' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/../core/memory.hpp(160,18): error : no member named 'apply' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/../core/memory.hpp(220,17): error : no template named 'make_from_tuple' in namespace 'std'; did you mean 'make_tuple'? 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/../core/memory.hpp(239,17): error : no member named 'apply' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/utility.hpp(63,1): error : a type specifier is required for all declarations 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/utility.hpp(85,77): error : no template named 'is_nothrow_invocable_v' in namespace 'std'; did you mean 'is_nothrow_assignable_v'? 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/utility.hpp(85,77): error : too many template arguments for variable template 'is_nothrow_assignable_v' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/utility.hpp(91,71): error : no template named 'is_nothrow_invocable_v' in namespace 'std'; did you mean 'is_nothrow_assignable_v'? 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/utility.hpp(91,71): error : too many template arguments for variable template 'is_nothrow_assignable_v' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/core/hashed_string.hpp(72,59): error : no template named 'basic_string_view' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/core/hashed_string.hpp(200,1): error : a type specifier is required for all declarations 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/core/hashed_string.hpp(210,1): error : a type specifier is required for all declarations 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(27,10): error : no type named 'string_view' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(36,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(37,30): error : no type named 'string_view' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(43,20): error : no type named 'string_view' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(48,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(122,41): error : no type named 'string_view' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(127,43): error : no type named 'string_view' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(140,30): error : no template named 'in_place_type_t' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(166,34): error : no type named 'string_view' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(173,10): error : no type named 'string_view' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/any.hpp(54,29): error : no type named 'byte' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/any.hpp(174,29): error : no template named 'in_place_type_t' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/any.hpp(165,26): error : no member named 'in_place_type' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/any.hpp(165,44): error : expected '(' for function-style cast or type construction 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/any.hpp(165,45): error : expected expression 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/core/tuple.hpp(75,77): error : no member named 'apply' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/core/tuple.hpp(81,83): error : no member named 'apply' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/core/tuple.hpp(76,21): error : no member named 'apply' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/core/tuple.hpp(82,21): error : no member named 'apply' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/core/tuple.hpp(91,1): error : use of class template 'forward_apply' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/core/tuple.hpp(91,20): error : expected ';' at end of declaration 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/core/tuple.hpp(91,21): error : cannot use arrow operator on a type 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/group.hpp(511,25): error : no member named 'apply' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/group.hpp(910,25): error : no member named 'apply' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/view.hpp(114,32): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/view.hpp(114,67): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/view.hpp(124,28): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/view.hpp(124,63): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/view.hpp(129,28): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/view.hpp(129,63): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/view.hpp(1091,1): error : a type specifier is required for all declarations 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/view.hpp(1099,1): error : a type specifier is required for all declarations 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/helper.hpp(107,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/helper.hpp(210,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/helper.hpp(223,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/helper.hpp(236,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/helper.hpp(251,1): error : a type specifier is required for all declarations 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/fwd.hpp(31,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/fwd.hpp(41,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(67,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(76,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(86,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(113,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(132,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(162,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(186,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(71,60): error : no member named 'is_invocable_r_v' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(71,77): error : 'Ret' does not refer to a value 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(71,82): error : expected unqualified-id 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(71,101): error : expected ';' at end of declaration 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(71,101): error : expected unqualified-id 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(81,60): error : no member named 'is_invocable_r_v' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(81,77): error : 'Ret' does not refer to a value 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(81,82): error : expected unqualified-id 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(81,101): error : expected ';' at end of declaration 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(81,101): error : expected unqualified-id 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(91,60): error : no member named 'is_invocable_r_v' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(91,77): error : 'Ret' does not refer to a value 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(91,82): error : expected unqualified-id 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(91,101): error : expected ';' at end of declaration 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(91,101): error : expected unqualified-id 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(302,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(303,1): error : a type specifier is required for all declarations 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(310,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(311,1): error : a type specifier is required for all declarations 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/delegate.hpp(319,1): error : a type specifier is required for all declarations 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/sigh.hpp(137,42): error : no template named 'is_nothrow_swappable_v' in namespace 'std'; did you mean '_Is_nothrow_swappable'? 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/sigh.hpp(137,80): error : expected '(' for function-style cast or type construction 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/sigh.hpp(366,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/sigh.hpp(371,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/sigh.hpp(410,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/sigh.hpp(430,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/sigh.hpp(467,1): error : a type specifier is required for all declarations 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/mixin.hpp(187,16): error : use of class template 'sink' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/mixin.hpp(202,16): error : use of class template 'sink' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/mixin.hpp(217,16): error : use of class template 'sink' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/observer.hpp(45,56): error : use of class template 'exclude_t' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/observer.hpp(80,56): error : use of class template 'exclude_t' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/observer.hpp(101,56): error : use of class template 'exclude_t' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/organizer.hpp(302,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/organizer.hpp(334,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/organizer.hpp(121,38): error : use of class template 'as_view' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/organizer.hpp(121,45): error : expected ')' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/registry.hpp(1065,34): error : use of class template 'exclude_t' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/registry.hpp(1075,34): error : use of class template 'exclude_t' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/registry.hpp(1088,27): error : use of class template 'get_t' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/registry.hpp(1088,60): error : use of class template 'exclude_t' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/registry.hpp(1112,37): error : use of class template 'get_t' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/registry.hpp(1112,70): error : use of class template 'exclude_t' requires template arguments 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/node.hpp(60,24): error : cannot initialize a value of type 'meta_traits' with an rvalue of type 'std::underlying_type_t' (aka 'unsigned int') 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/node.hpp(163,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/node.hpp(179,10): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/node.hpp(181,85): error : right hand operand to -> has non-pointer-to-member type 'int' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/node.hpp(184,40): error : use of undeclared identifier 'value_type' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/node.hpp(184,75): error : right hand operand to -> has non-pointer-to-member type 'int' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/node.hpp(195,24): error : unknown type name 'value_type'; did you mean 'std::false_type'? 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/meta.hpp(245,28): error : no template named 'in_place_type_t' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/meta.hpp(256,50): error : no template named 'in_place_type_t' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/meta.hpp(1423,28): error : no matching function for call to 'look_for' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/meta.hpp(1445,28): error : no matching function for call to 'look_for' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/meta.hpp(1178,121): error : no matching function for call to 'find_member' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/meta.hpp(1178,217): error : no matching function for call to 'find_member' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/meta.hpp(1505,29): error : no matching function for call to 'find_member' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/meta.hpp(1506,137): error : use of undeclared identifier 'curr' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/meta.hpp(1506,158): error : use of undeclared identifier 'curr' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/meta.hpp(1506,164): error : use of undeclared identifier 'curr' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/meta.hpp(1576,28): error : no matching function for call to 'look_for' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/container.hpp(316,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/utility.hpp(225,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/utility.hpp(274,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/utility.hpp(311,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/utility.hpp(417,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/utility.hpp(431,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/utility.hpp(519,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/utility.hpp(532,25): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(34,24): error : no matching function for call to 'find_member' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(40,40): error : no matching function for call to 'find_member' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(83,27): error : no matching function for call to 'find_member' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(93,27): error : no matching function for call to 'find_member' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(112,24): error : no matching function for call to 'find_member' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(169,31): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(237,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(275,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(323,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(344,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(403,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(403,27): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(454,31): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(473,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(239,73): error : no member named 'invoke_result_t' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(239,108): error : expected '(' for function-style cast or type construction 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(239,119): error : expected ';' after alias declaration 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/meta/factory.hpp(241,70): error : use of undeclared identifier 'conv_type' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/poly.hpp(65,14): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/poly.hpp(78,29): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/poly.hpp(91,29): error : 'auto' not allowed in template parameter until C++17 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/poly.hpp(211,30): error : no template named 'in_place_type_t' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/entity.hpp(135,31): error : cannot initialize a value of type 'value_type' (aka 'entt::entity') with an rvalue of type 'entity_type' (aka 'unsigned int') 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/sparse_set.hpp(165,27): error : constexpr variable 'max_size' must be initialized by a constant expression 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(253,40): error : no member named 'in_place_type' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(253,54): error : 'Type' does not refer to a value 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/signal/../core/type_info.hpp(253,59): error : expected expression 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/sparse_set.hpp(196,35): error : constexpr variable 'init' must be initialized by a constant expression 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/entity.hpp(153,31): error : cannot initialize a value of type 'value_type' (aka 'entt::entity') with an rvalue of type 'entity_type' (aka 'unsigned int') 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/any.hpp(509,39): error : no member named 'in_place_type' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/any.hpp(509,53): error : 'Type' does not refer to a value 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/any.hpp(509,60): error : expected expression 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/poly/../core/any.hpp(509,61): error : expected expression 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/sparse_set.hpp(210,22): error : no member named 'destroy' in namespace 'std' 2>D:\Workspace\Cpp\Furnace\FurnaceEngine\Api/..\Components/....\ThirdParty\entt\src\entt/entity/sparse_set.hpp(689,24): error : constexpr variable 'mask' must be initialized by a constant expression

tritao commented 2 months ago

Can you enable verbose mode in options and paste the log?

oistikbal commented 2 months ago
ignoring nonexistent directory "lib\clang\18\include"
2>ignoring duplicate directory "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include"
2>ignoring duplicate directory "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\atlmfc\include"
2>ignoring duplicate directory "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include"
2>ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt"
2>ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um"
2>ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared"
2>ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\winrt"
2>ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\cppwinrt"
2>ignoring duplicate directory "C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\Include\um"
2>#include "..." search starts here:
2>#include <...> search starts here:
2> D:\Workspace\Cpp\Furnace\FurnaceEngine\Api
2> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include
2> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\atlmfc\include
2> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include
2> C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt
2> C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um
2> C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared
2> C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\winrt
2> C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\cppwinrt
2> C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\Include\um
2>End of search list.
2>Error parsing 'entity_api.h'`
Same very long error.
CppSharp has encountered an error while parsing code.
2>Compiler argument: -xc++
2>Compiler argument: -std=gnu++14
2>Compiler argument: -fno-rtti
2>Compiler argument: -fms-extensions
2>Compiler argument: -fms-compatibility
2>Compiler argument: -fdelayed-template-parsing
2>Target triple: x86_64-pc-windows-msvc
tritao commented 2 months ago

Looks like its passing GNU++14 instead of C++20, that seems to be the main issue, why I am not sure.

tritao commented 2 months ago

I think its hitting this: https://github.com/mono/CppSharp/blob/main/src/Parser/ParserOptions.cs#L163

tritao commented 2 months ago

Can you try changing the order of your options setup?

oistikbal commented 2 months ago
`            var options = driver.Options;
            driver.ParserOptions.MicrosoftMode = true;
            driver.ParserOptions.LanguageVersion = CppSharp.Parser.LanguageVersion.CPP20;
            driver.ParserOptions.Verbose = true;

            options.GeneratorKind = GeneratorKind.CSharp;
            options.OutputDir = _outputPath;

            var module = options.AddModule("FurnaceEngine");
            module.OutputNamespace = string.Empty;
            module.IncludeDirs.Add(_apiPath);
            module.Headers.Add("entity_api.h");`

`End of search list.
2>Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
2>Repeat 2 times:
2>--------------------------------
2>   at CppSharp.Parser.ClangParser+__Internal.ParseHeader(IntPtr)
2>--------------------------------
2>   at CppSharp.Parser.ClangParser.ParseHeader(CppSharp.Parser.CppParserOptions)
2>   at CppSharp.ClangParser.ParseSourceFiles(System.Collections.Generic.IEnumerable`1<System.String>, CppSharp.Parser.ParserOptions)
2>   at CppSharp.Driver.ParseCode()
2>   at CppSharp.ConsoleDriver.Run(CppSharp.ILibrary)
2>   at FurnaceAPIGenerator.Program.Main(System.String[])` 

What is my setup should be? Now getting an another error.

tritao commented 2 months ago

Ok so now it looks like there is an issue with the parser.

You can try running CppSharp in debug mode, via -debug flag to build.sh: https://github.com/mono/CppSharp/blob/main/build/build.sh#L199

That should give you a stack trace with LLVM and Clang symbols: https://github.com/mono/CppSharp/blob/main/build/build.sh#L199

After which I may be able to identify the issue and see if its possible to fix easily.

oistikbal commented 2 months ago

image

oistikbal commented 2 months ago
  #pragma once

  class Foo
  {
  public:

      int a;
      float b;
  };
int FooAdd(Foo* foo);
2>Compiler argument: -xc++
2>Compiler argument: -std=c++20
2>Compiler argument: -fno-rtti
2>Compiler argument: -fms-extensions
2>Compiler argument: -fms-compatibility
2>Compiler argument: -fdelayed-template-parsing`

This compiles fine, it is c++20, not gnu anymore. but still can't include entt. Can't compile at the latest version for debug.

tritao commented 2 months ago

image

I think if you press on the middle button on that dialog, it should give you a complete stack trace.

oistikbal commented 2 months ago

image

I think if you press on the middle button on that dialog, it should give you a complete stack trace.

C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(5932,5): error MSB3073: ""C:\Program Files\dotnet\dotnet.exe" "D:\Workspace\C#\Cp pSharp\bin\Debug\CSharp.Gen.dll"" komutundan -2147483645 koduyla çıkıldı. [D:\Workspace\C#\CppSharp\tests\dotnet\CSharp\CSharp.Gen.csproj]

tritao commented 2 months ago

It should look something like this:

image

tritao commented 2 months ago

You should run it under VS to get an accurate call stack.

oistikbal commented 2 months ago

i get that error from build.sh script not from my app. i can't build from .sln either.

`
Build started at 13:56...
1>------ Build started: Project: CppSharp.Runtime, Configuration: Debug x64 ------
2>------ Build started: Project: CppSharp.AST, Configuration: Debug x64 ------
3>------ Build started: Project: NamespacesDerived.Native, Configuration: Debug x64 ------
2>CppSharp.AST -> D:\Workspace\C#\CppSharp\bin\Debug\CppSharp.AST.dll
1>CppSharp.Runtime -> D:\Workspace\C#\CppSharp\bin\Debug\CppSharp.Runtime.dll
4>------ Build started: Project: CppSharp.Parser.CSharp, Configuration: Debug x64 ------
5>------ Build started: Project: CppSharp.Parser, Configuration: Debug x64 ------
3>NamespacesDerived.cpp
4>CppSharp.Parser.CSharp -> D:\Workspace\C#\CppSharp\bin\Debug\CppSharp.Parser.CSharp.dll
5>CppSharp.Parser -> D:\Workspace\C#\CppSharp\bin\Debug\CppSharp.Parser.dll
6>------ Build started: Project: CppSharp.Generator, Configuration: Debug x64 ------
3>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27): error C2440: 'static_cast': cannot convert from 'CustomAllocator<unsigned int>' to 'CustomAllocator<_Newfirst>'
3>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27): error C2440:         with
3>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27): error C2440:         [
3>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27): error C2440:             _Newfirst=std::_Container_proxy
3>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27): error C2440:         ]
3>(compiling source file '../../../../../C#/CppSharp/tests/dotnet/NamespacesDerived/NamespacesDerived.cpp')
3>    C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27):
3>    'CustomAllocator<_Newfirst>::CustomAllocator': no overloaded function could convert all the argument types
3>        with
3>        [
3>            _Newfirst=std::_Container_proxy
3>        ]
3>        D:\Workspace\C(109,1):
3>        could be 'CustomAllocator<_Newfirst>::CustomAllocator(CustomAllocator<_Newfirst> &&)'
3>        with
3>        [
3>            _Newfirst=std::_Container_proxy
3>        ]
3>            C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27):
3>            'CustomAllocator<_Newfirst>::CustomAllocator(CustomAllocator<_Newfirst> &&)': cannot convert argument 1 from 'CustomAllocator<unsigned int>' to 'CustomAllocator<_Newfirst> &&'
3>        with
3>        [
3>            _Newfirst=std::_Container_proxy
3>        ]
3>                C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27):
3>                Reason: cannot convert from 'CustomAllocator<unsigned int>' to 'CustomAllocator<_Newfirst>'
3>        with
3>        [
3>            _Newfirst=std::_Container_proxy
3>        ]
3>                C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27):
3>                No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
3>        D:\Workspace\C(109,1):
3>        or       'CustomAllocator<_Newfirst>::CustomAllocator(const CustomAllocator<_Newfirst> &)'
3>        with
3>        [
3>            _Newfirst=std::_Container_proxy
3>        ]
3>            C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27):
3>            'CustomAllocator<_Newfirst>::CustomAllocator(const CustomAllocator<_Newfirst> &)': cannot convert argument 1 from 'CustomAllocator<unsigned int>' to 'const CustomAllocator<_Newfirst> &'
3>        with
3>        [
3>            _Newfirst=std::_Container_proxy
3>        ]
3>                C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27):
3>                Reason: cannot convert from 'CustomAllocator<unsigned int>' to 'const CustomAllocator<_Newfirst>'
3>        with
3>        [
3>            _Newfirst=std::_Container_proxy
3>        ]
3>                C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27):
3>                No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
3>        C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27):
3>        while trying to match the argument list '(CustomAllocator<unsigned int>)'
3>    C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,27):
3>    the template instantiation context (the oldest one first) is
3>        D:\Workspace\C(123,56):
3>        see reference to class template instantiation 'std::vector<unsigned int,CustomAllocator<unsigned int>>' being compiled
3>        C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(760,19):
3>        while compiling class template member function 'std::vector<unsigned int,CustomAllocator<unsigned int>>::~vector(void) noexcept'
3>            D:\Workspace\C(124,1):
3>            see the first reference to 'std::vector<unsigned int,CustomAllocator<unsigned int>>::~vector' in 'StdFields::StdFields'
3>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(763,25): error C2530: '_Alproxy': references must be initialized
3>(compiling source file '../../../../../C#/CppSharp/tests/dotnet/NamespacesDerived/NamespacesDerived.cpp')
3>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(764,32): error C3536: '_Alproxy': cannot be used before it is initialized
3>(compiling source file '../../../../../C#/CppSharp/tests/dotnet/NamespacesDerived/NamespacesDerived.cpp')
3>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(764,9): error C2672: '_Delete_plain_internal': no matching overloaded function found
3>(compiling source file '../../../../../C#/CppSharp/tests/dotnet/NamespacesDerived/NamespacesDerived.cpp')
3>    C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\xmemory(1111,19):
3>    could be 'void std::_Delete_plain_internal(_Alloc &,_Alloc::value_type *const ) noexcept'
3>        C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(764,9):
3>        Failed to specialize function template 'void std::_Delete_plain_internal(_Alloc &,_Alloc::value_type *const ) noexcept'
3>            C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(764,9):
3>            With the following template arguments:
3>                C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\include\vector(764,9):
3>                '_Alloc=int'
3>Done building project "NamespacesDerived.Native.vcxproj" -- FAILED.
6>CppSharp.Generator -> D:\Workspace\C#\CppSharp\bin\Debug\CppSharp.Generator.dll
7>------ Build started: Project: VTables.Gen, Configuration: Debug x64 ------
8>------ Build started: Project: StandardLib.Gen, Configuration: Debug x64 ------
9>------ Build started: Project: NamespacesDerived.Gen, Configuration: Debug x64 ------
10>------ Build started: Project: Encodings.Gen, Configuration: Debug x64 ------
11>------ Build started: Project: Common.Gen, Configuration: Debug x64 ------
12>------ Build started: Project: CSharp.Gen, Configuration: Debug x64 ------
13>------ Build started: Project: CLI.Gen, Configuration: Debug x64 ------
14>------ Build started: Project: CppSharp.Parser.Gen, Configuration: Debug x64 ------
15>------ Build started: Project: CppSharp.Parser.Bootstrap, Configuration: Debug x64 ------
16>------ Build started: Project: CppSharp.Generator.Tests, Configuration: Debug x64 ------
17>------ Build started: Project: CppSharp.CLI, Configuration: Debug x64 ------
8>StandardLib.Gen -> D:\Workspace\C#\CppSharp\bin\Debug\StandardLib.Gen.dll
18>------ Build started: Project: StandardLib.CLI, Configuration: Debug x64 ------
10>Encodings.Gen -> D:\Workspace\C#\CppSharp\bin\Debug\Encodings.Gen.dll
7>VTables.Gen -> D:\Workspace\C#\CppSharp\bin\Debug\VTables.Gen.dll
19>------ Build started: Project: Encodings.CSharp, Configuration: Debug x64 ------
20>------ Build started: Project: VTables.CSharp, Configuration: Debug x64 ------
18>StandardLib.cpp
18>/gen/StandardLib/StandardLib.cpp(1,1): error C1083: Cannot open source file: '..\..\gen\StandardLib\StandardLib.cpp': No such file or directory
18>(compiling source file '/gen/StandardLib/StandardLib.cpp')
18>.NETCoreApp,Version=v8.0.AssemblyAttributes.cpp
20>VTables.CSharp -> D:\Workspace\C#\CppSharp\build\gen\VTables\VTables.CSharp.dll
11>Common.Gen -> D:\Workspace\C#\CppSharp\bin\Debug\Common.Gen.dll
21>------ Build started: Project: VTables.Tests.CSharp, Configuration: Debug x64 ------
22>------ Build started: Project: Common.CSharp, Configuration: Debug x64 ------
23>------ Build started: Project: Common.CLI, Configuration: Debug x64 ------
19>Encodings.CSharp -> D:\Workspace\C#\CppSharp\build\gen\Encodings\Encodings.CSharp.dll
24>------ Build started: Project: Encodings.Tests.CSharp, Configuration: Debug x64 ------
9>NamespacesDerived.Gen -> D:\Workspace\C#\CppSharp\bin\Debug\NamespacesDerived.Gen.dll
21>D:\Workspace\C#\CppSharp\tests\dotnet\VTables\VTables.Tests.cs(3,7,3,14): error CS0246: The type or namespace name 'VTables' could not be found (are you missing a using directive or an assembly reference?)
21>D:\Workspace\C#\CppSharp\tests\dotnet\VTables\VTables.Tests.cs(5,27,5,30): error CS0246: The type or namespace name 'Foo' could not be found (are you missing a using directive or an assembly reference?)
21>D:\Workspace\C#\CppSharp\tests\dotnet\VTables\VTables.Tests.cs(25,50,25,69): error CS0246: The type or namespace name 'DerivedClassVirtual' could not be found (are you missing a using directive or an assembly reference?)
21>D:\Workspace\C#\CppSharp\tests\dotnet\VTables\VTables.Tests.cs(17,43,17,62): error CS0246: The type or namespace name 'DerivedClassVirtual' could not be found (are you missing a using directive or an assembly reference?)
21>D:\Workspace\C#\CppSharp\tests\dotnet\VTables\VTables.Tests.cs(53,30,53,46): error CS0246: The type or namespace name 'BaseClassVirtual' could not be found (are you missing a using directive or an assembly reference?)
23>AnotherUnit_GenerateName.cpp
23>Common_GenerateName.cpp
22>Common.CSharp -> D:\Workspace\C#\CppSharp\build\gen\Common\Common.CSharp.dll
25>------ Build started: Project: Common.Tests.CSharp, Configuration: Debug x64 ------
21>Done building project "VTables.Tests.CSharp.csproj" -- FAILED.
24>D:\Workspace\C#\CppSharp\tests\dotnet\Encodings\Encodings.Tests.cs(2,13,2,22): error CS0246: The type or namespace name 'Encodings' could not be found (are you missing a using directive or an assembly reference?)
24>Done building project "Encodings.Tests.CSharp.csproj" -- FAILED.
23>/gen/Common/AnotherUnit_GenerateName.cpp(1,1): error C1083: Cannot open source file: '..\..\gen\Common\AnotherUnit_GenerateName.cpp': No such file or directory
23>(compiling source file '/gen/Common/AnotherUnit_GenerateName.cpp')
23>/gen/Common/Common_GenerateName.cpp(1,1): error C1083: Cannot open source file: '..\..\gen\Common\Common_GenerateName.cpp': No such file or directory
23>(compiling source file '/gen/Common/Common_GenerateName.cpp')
23>.NETCoreApp,Version=v8.0.AssemblyAttributes.cpp
15>CppSharp.Parser.Bootstrap -> D:\Workspace\C#\CppSharp\bin\Debug\CppSharp.Parser.Bootstrap.dll
12>CSharp.Gen -> D:\Workspace\C#\CppSharp\bin\Debug\CSharp.Gen.dll
18>Done building project "StandardLib.CLI.vcxproj" -- FAILED.
26>------ Build started: Project: CSharp.CSharp, Configuration: Debug x64 ------
13>CLI.Gen -> D:\Workspace\C#\CppSharp\bin\Debug\CLI.Gen.dll
27>------ Build started: Project: StandardLib.Tests.CLI, Configuration: Debug x64 ------
28>------ Build started: Project: CLI.CLI, Configuration: Debug x64 ------
9>
9>Generating bindings for NamespacesDerived (CSharp)
25>D:\Workspace\C#\CppSharp\tests\dotnet\Common\Common.Tests.cs(5,14,5,24): error CS0246: The type or namespace name 'CommonTest' could not be found (are you missing a using directive or an assembly reference?)
25>D:\Workspace\C#\CppSharp\tests\dotnet\Common\Common.Tests.cs(3,7,3,17): error CS0246: The type or namespace name 'CommonTest' could not be found (are you missing a using directive or an assembly reference?)
25>D:\Workspace\C#\CppSharp\tests\dotnet\Common\Common.Tests.cs(1011,46,1011,69): error CS0246: The type or namespace name 'AbstractWithVirtualDtor' could not be found (are you missing a using directive or an assembly reference?)
25>Done building project "Common.Tests.CSharp.csproj" -- FAILED.
9>File not found: 'NamespacesDerived.Native'
9>Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
9>Repeat 2 times:
9>--------------------------------
9>   at <Module>.CppSharp.CppParser.ParserResult.{dtor}(CppSharp.CppParser.ParserResult*)
9>--------------------------------
9>   at <Module>.CppSharp.CppParser.ParserResult.__delDtor(CppSharp.CppParser.ParserResult*, UInt32)
9>   at CppSharp.Parser.ParserResult.~ParserResult()
9>   at CppSharp.Parser.ParserResult.Dispose(Boolean)
9>   at CppSharp.Parser.ParserResult.Dispose()
9>   at CppSharp.Driver.ParseLibraries()
9>   at CppSharp.ConsoleDriver.Run(CppSharp.ILibrary)
9>   at CppSharp.Tests.NamespacesDerived.Main()
17>CppSharp.CLI -> D:\Workspace\C#\CppSharp\bin\Debug\CppSharp.CLI.dll
16>CppSharp.Generator.Tests -> D:\Workspace\C#\CppSharp\bin\Debug\CppSharp.Generator.Tests.dll
23>Done building project "Common.CLI.vcxproj" -- FAILED.
29>------ Build started: Project: Common.Tests.CLI, Configuration: Debug x64 ------
27>CSC : error CS0006: Metadata file 'D:\Workspace\C#\CppSharp\build\gen\StandardLib\StandardLib.CLI.dll' could not be found
14>CppSharp.Parser.Gen -> D:\Workspace\C#\CppSharp\bin\Debug\CppSharp.Parser.Gen.dll
27>Done building project "StandardLib.Tests.CLI.csproj" -- FAILED.
28>CLI.cpp
26>D:\Workspace\C#\CppSharp\tests\dotnet\CSharp\CSharpPartialMethods.cs(11,22,11,36): error CS0759: No defining declaration found for implementing declaration of partial method 'TestFinalizer.DisposePartial(bool)'
26>Done building project "CSharp.CSharp.csproj" -- FAILED.
30>------ Build started: Project: CSharp.Tests.CSharp, Configuration: Debug x64 ------
28>ClassWithNestedEnum.cpp
28>Employee.cpp
28>EmployeeOrg.cpp
28>NestedEnumConsumer.cpp
29>CSC : error CS0006: Metadata file 'D:\Workspace\C#\CppSharp\build\gen\Common\Common.CLI.dll' could not be found
29>Done building project "Common.Tests.CLI.csproj" -- FAILED.
28>/gen/CLI/CLI.cpp(1,1): error C1083: Cannot open source file: '..\..\gen\CLI\CLI.cpp': No such file or directory
28>(compiling source file '/gen/CLI/CLI.cpp')
28>/gen/CLI/ClassWithNestedEnum.cpp(1,1): error C1083: Cannot open source file: '..\..\gen\CLI\ClassWithNestedEnum.cpp': No such file or directory
28>(compiling source file '/gen/CLI/ClassWithNestedEnum.cpp')
28>/gen/CLI/Employee.cpp(1,1): error C1083: Cannot open source file: '..\..\gen\CLI\Employee.cpp': No such file or directory
28>(compiling source file '/gen/CLI/Employee.cpp')
28>/gen/CLI/NestedEnumConsumer.cpp(1,1): error C1083: Cannot open source file: '..\..\gen\CLI\NestedEnumConsumer.cpp': No such file or directory
28>(compiling source file '/gen/CLI/NestedEnumConsumer.cpp')
28>/gen/CLI/EmployeeOrg.cpp(1,1): error C1083: Cannot open source file: '..\..\gen\CLI\EmployeeOrg.cpp': No such file or directory
28>(compiling source file '/gen/CLI/EmployeeOrg.cpp')
28>.NETCoreApp,Version=v8.0.AssemblyAttributes.cpp
30>CSC : error CS0006: Metadata file 'D:\Workspace\C#\CppSharp\build\obj\CSharp.CSharp\x64\Debug\ref\CSharp.CSharp.dll' could not be found
30>Done building project "CSharp.Tests.CSharp.csproj" -- FAILED.
28>Done building project "CLI.CLI.vcxproj" -- FAILED.
31>------ Build started: Project: CLI.Tests.CLI, Configuration: Debug x64 ------
31>CSC : error CS0006: Metadata file 'D:\Workspace\C#\CppSharp\build\gen\CLI\CLI.CLI.dll' could not be found
31>Done building project "CLI.Tests.CLI.csproj" -- FAILED.
9>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(5932,5): error MSB3073: The command ""C:\Program Files\dotnet\dotnet.exe" "D:\Workspace\C#\CppSharp\bin\Debug\NamespacesDerived.Gen.dll"" exited with code -1073741819.
9>Done building project "NamespacesDerived.Gen.csproj" -- FAILED.
32>------ Build started: Project: NamespacesDerived.Tests.CSharp, Configuration: Debug x64 ------
32>D:\Workspace\C#\CppSharp\tests\dotnet\NamespacesDerived\NamespacesDerived.Tests.cs(7,7,7,24): error CS0246: The type or namespace name 'NamespacesDerived' could not be found (are you missing a using directive or an assembly reference?)
32>D:\Workspace\C#\CppSharp\tests\dotnet\NamespacesDerived\NamespacesDerived.Tests.cs(180,50,180,72): error CS0246: The type or namespace name 'HasVirtualInDependency' could not be found (are you missing a using directive or an assembly reference?)
32>Done building project "NamespacesDerived.Tests.CSharp.csproj" -- FAILED.
========== Build: 18 succeeded, 14 failed, 11 up-to-date, 0 skipped ==========
========== Build completed at 13:56 and took 04,184 seconds ==========
`
oistikbal commented 2 months ago

I have this problem with this single include file. maybe you could try it? i'd be more easier probably. "https://github.com/skypjack/entt/tree/master/single_include/entt"

oistikbal commented 2 months ago

do am i using the library wrong? Maybe i shouldn't include in api header files but only necessary base types.

tritao commented 2 months ago

I think binding a library as complicated as entt to .NET (or any other target for that matter) is a dead-end, due to a couple reasons: it's designed as header-only (so there's no symbols for P/invoke to bind to) and since the API is heavily templated, its unlikely that CppSharp support for translating templates to C# generics is going to work anyway. It also has its own RTTI system which would need custom integration work on the bindings side.

If you want a ECS, you're better off using something designed from the ground up for .NET, or find a much simpler native ECS to bind to .NET (maybe something C based like flecs?)

EDIT: https://github.com/BeanCheeseBurrito/Flecs.NET

oistikbal commented 2 months ago

Well, i'm not trying to bind entt. I need it to write for interop between editor and the engine. I could do that without include entt but it doesn't seems pratical. Like return type ENTT_ID_TYPE instead of uint32_t. That's why i thought probably i'm using it wrong.

Actually i was going to write editor interops manually but after i realized i need a reflection system for user defined components. I started to research AST generation at first so, i want to get warmed up with engine interoption first, plus CppSharp also supports AST. Maybe it's possible to do unreal engine like reflection. So i can use single tool for everything.

UCLASS()
class YOURPROJECT_API AHealthPotion : public AActor
{
.....
    // Health restoration value
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Potion Properties")
    float HealthRestoreValue;

    // Weight of the potion
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Potion Properties")
    float Weight;

    // Name of the potion
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Potion Properties")
    FString PotionName;

    // Function to use the potion
    UFUNCTION(BlueprintCallable, Category = "Potion Actions")
    void UsePotion(AActor* TargetActor);
};