Jak mogę przekazać wygenerowaną dynamicznie funkcję C++ jako * funcprt do API C?Howto przekazać funcptr z klasy C++ do API C?
eksportuje tego API:
DllImport void api_register_func(char *func_name, void (*funcptr)(char *, char *));
muszę stworzyć działają podczas wykonywania ponieważ nie wiem o tym wcześniej. Więc użyłem Klasa:
class JsFunc
{
public:
char * JsFuncName;
char * JsParameter;
void RunFunc(char * val1, char * val2)
{
printf("\nJsFunc.runFunc executed, JsParameter=%s passed\n",JsParameter);
}
};
i nazwać tak:
JsFunc * jsm = new JsFunc();
jsm->JsFuncName = external_parameter1;
jsm->JsParameter = external_parameter2;
api_register_func(external_parameter1, jsm->RunFunc);
Ale VisualStudio 2015 mówi mi:
Błąd C3867 'JsFunc :: runFunc' nie- standardowa składnia; stosowanie '&' do utworzyć wskaźnik do członkiem VJCS C: \ Users \ astrauss \ Source \ Repos \ VCJS \ VCJS \ VCJS.cpp 54
Niestety jeśli kod jest źle, nie jestem Programista C/C++, ale muszę uruchomić tę funkcję w mojej codziennej pracy. Dzięki!
Czy masz dostęp do C++ 11? – Kupiakos
Niestety większość tego nie ma żadnego sensu. Wygląda na to, że pytasz o rozwiązanie, zamiast pytać o problem ([XY Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)). Spróbuj zmienić swoje pytanie – Amit
Nie możesz tego dokładnie zrobić, ponieważ RunFunc ma "ukryty" parametr 'this', o którym C nic nie wie (który posiada wskaźnik do twojego obiektu' jsm'.) Musisz znaleźć w jakiś sposób można "załadować" gdzieś adres 'jsm' –