Miten voidaan määrätä dll tiedoston kansio ohjelmassa muuttujan avulla?
Olen käyttänyt fmod.dll tiedostoa musiikin toistoon omassa ohjelmassani. Ohjelmaan liitetään moduuli jonka kautta homma onnistuu. Alkuperäinen koodi:
Public Declare Function FSOUND_Init Lib "fmod.dll" Alias "_FSOUND_Init@12" (ByVal mixrate As Long, ByVal maxchannels As Long, ByVal flags As FSOUND_INITMODES) As Byte
Tämä on oletuksena ja tässähän fmod.dll sijaitsee oletuksena sijaisee samassa kansiossa exen kanssa. Tietenkin fmod.dll voidaan sijoittaa järjestelmän systeemi kansioon, mutta se ei ole nyt ratkaisu. Kansio voidaan määrätä:
Public Declare Function FSOUND_Init Lib "testikansio\fmod.dll" Alias "_FSOUND_Init@12" (ByVal mixrate As Long, ByVal maxchannels As Long, ByVal flags As FSOUND_INITMODES) As Byte
Nyt homma toimii, kun fmod.dll sijoitetaan exen kanssa samassa kansiossa olevaan testikansioon.
Mutta jos halutaan, että kansion nimi annetaan ohjelmalle esim. komentoriviparametrina tai tiedostosta luettavaksi muuttujaksi esim.
Public Declare Function FSOUND_Init Lib testikansio &"\fmod.dll" Alias "_FSOUND_Init@12" (ByVal mixrate As Long, ByVal maxchannels As Long, ByVal flags As FSOUND_INITMODES) As Byte
Nyt kansion nimi on annettu muuttujan avulla testikansio ja kansion nimi löytyy muualla ohjelmassa ilman ongelmia, mutta tämä kohta antaa virheilmoituksen. Expected: String Constant
Ei taida onnistua, dll:n sijainti pitää määrittää ennen ohjelman kääntämistä.
Täytyypä selvittää tämä kyllä
Aihe on jo aika vanha, joten et voi enää vastata siihen.