Ahoj
Mam problém (předpokládám) s různými kompilacemi API od výrobců elektronickych device. Jde o to že pokud v nastaveni projektu Built->Platform target nastavim ruzne hodnoty tak dojde k ne-funkčnosti různých připojenych API těch divajzu.
Mam kod - pišu z hlavy takže v tom popisu mohou byt chyby
public interface ITerminal
{
... cela rada metod propert atd
}
public class BaseInterface
{
.... společne metody nad API
...
.... deklarace různých struktur pro dosazeni stejného výsledku z ruznych API
}
dale pak ruzne Enumy
a vytvoreni vlastniho terminalu
public class mujterminalX : BaseInterface, ITerminal
{
public void InitApi(){
API_X=new API_X(); // BUM tady to spadne
}
}
public class mujterminalY : BaseInterface, ITerminal
{
public void InitApi(){
API_Y=new API_Y(); // BUM tady to spadne
}
}
atd...
Všechny ty API_X, API_Y, API_Z jsou volány prostřednictvím marshalingu
Nastaveni platformy API_X API_Y
x86 BUM OK
x64 OK BUM
Any CPU teď nevím správne pořadí ale jeden nefunguje a druhy ano
těch API mám již celkem 5 v tom projektu a dnes přidávaný nový způsobil tuto chybu a tak se ptám jestli existuje nějaká InLine - Pragma nastavení přímo do kódu, typicky k te incializaci API (případně k dalším funkcím abych) tu platformu mohl řídít v době kompilace.
A jen dovětek vše se odehráva v jednom projektu - jedna DLL kompilace
Doufám že je to srozumitelné - měl by někdo nějaký naápad jak tento problem řešit.
ps: o deklaraci těch API mnoho nevím ale předpokládám že všechny budou CDECL