Black friday Black friday
Aprílový black friday tě nenechá v klidu! Až 80 % prémiového obsahu zdarma. Více informací
Pouze tento týden slevy až 80 % na programování v Javě

Diskuze: DLL z C++ do C#

C# .NET .NET (C# a Visual Basic) DLL z C++ do C# American English version English version

Aktivity (3)
Avatar
Magda Stankova:22.11.2018 13:24

Ahoj.Potřebuji převést dll knihovnu sestavenou v builder pro 32. Nemám k ní zdroj.
Na jednom počítači win10 64 je vše OK. Na jiném počítači win10 64 hlásí chybu: Message = "Knihovnu DLL VCLNTB.DLL nelze načíst: Uvedený modul nebyl nalezen. (Výjimka na základě hodnoty HRESULT: 0x8007007E)"
Zkoušela jsem jak pro x86, tak x64, anycpu. Děkuji za odpověď.

 
Odpovědět 22.11.2018 13:24
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na Magda Stankova
Luboš Běhounek Satik:22.11.2018 13:30

a to dll je kde? Ve slozce vedle exace nebo nekde ve win v system32?

Nahoru Odpovědět 22.11.2018 13:30
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
Magda Stankova:23.11.2018 17:37

dll je vedle exače, na obou počítačích úplně stejně

 
Nahoru Odpovědět 23.11.2018 17:37
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na Magda Stankova
Luboš Běhounek Satik:23.11.2018 20:10

a v kterych slozkach je to na obou pc nainstalovane?

Nahoru Odpovědět 23.11.2018 20:10
https://www.facebook.com/peasantsandcastles/
Avatar
Jirka Jr
Člen
Avatar
Odpovídá na Magda Stankova
Jirka Jr:23.11.2018 20:43

není ta dll závislá na další dll?

pokud ta další dll na jednom počítači je přítomná/dohle­datelná a na druhém ne...

 
Nahoru Odpovědět 23.11.2018 20:43
Avatar
Jirka Jr
Člen
Avatar
Odpovídá na Magda Stankova
Jirka Jr:23.11.2018 20:48

btw tady se nekdo zmiňuje, že tu zavislost dll řešil pomocí DependencyWalkeru

 
Nahoru Odpovědět 23.11.2018 20:48
Avatar
Magda Stankova:23.11.2018 21:32

Udělala jsem nové dll z té původní, abych si zjednodušila některé funkce a obě knihovny jsou u exače. Knihovnu použiji v dalších projektech. Počítače mám spojené přes dropbox, proto je prostředí naprosto shodné.

 
Nahoru Odpovědět 23.11.2018 21:32
Avatar
Magda Stankova:23.11.2018 21:41

Teď mě ještě napadlo, na počítači, kde to funguje to mám na D (tam mám C a D). Na počítači, kde to nefunguje mám pouze C a tak na C. Může v tom být problém?

 
Nahoru Odpovědět 23.11.2018 21:41
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na Magda Stankova
Luboš Běhounek Satik:23.11.2018 22:37

zkusil bych to jen cvicne dat tam kde to nefunguje primo do nejake slozky na C, pomuze to nejak?

Nahoru Odpovědět 23.11.2018 22:37
https://www.facebook.com/peasantsandcastles/
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Magda Stankova
Martin Dráb:23.11.2018 22:41

Ta knihovna se jmenuje VCLNTB.DLL?

Může v tom být problém?

Nemělo by. Když se načítá EXE/DLL do paměti, prohledávají se cca následující místa:

  • adresář, kde dané EXE/DLL je,
  • aktuální adresář,
  • systémový adresář,
  • adresář Windows,
  • adresáře obsažené v proměnné PATH
  • asi ještě něco dalšího.

Obvykle jsou DLL v systémových adresářích nebo v adresáři z aplikací. Obskurnější umístění se moc nevyskytují.

Jen z té chybové zprávy není jasné, jestli je problém přímo v DLL, nebo v tom, že EXE soubor aplikace prostě nějakou knihovnu.nenajde.

Nahoru Odpovědět 23.11.2018 22:41
2 + 2 = 5 for extremely large values of 2
Avatar
Magda Stankova:24.11.2018 18:25

Ano, knihovna se jmenuje VCLNTB.DLL, na počítači, kde to nefunguje mám na C adresář pro zkoušený program. Původně jsem to zkoušela přímo na dropboxu. Předpokládám, že v knihovně problém není, protože na druhém počítači problém nemám a pokud použiji program v c++ borland problém nemám nikde.

 
Nahoru Odpovědět 24.11.2018 18:25
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Magda Stankova
Martin Dráb:24.11.2018 19:40

pokud použiji program v c++ borland problém nemám nikde.

Jakože pokud program spustíš v rámci prostředí Borland C++ (nebo to je C++ Builder...), tak se spustí na obou PC bez problémů? To mi přijde, že ta knihovna klidně může mít nějakou závislost, kterou to nenajde normálně, protože prostředí Borlandu nastaví nějaké proměnné prostředí. U C++/Delphi bývala trochu problém závislost na borlmn.dll, ale nevím, jak se to projevuje u .NET kódu.

Mohla bys někam tu knihovnu (případně i EXE) nahrát, abychom se mohli podívat?

Nahoru Odpovědět  +1 24.11.2018 19:40
2 + 2 = 5 for extremely large values of 2
Avatar
HONZ4
Člen
Avatar
Odpovídá na Magda Stankova
HONZ4:25.11.2018 10:46

pokud ta knihovna není kompilovaná s vypnutým nastavením "Link with dynamic RTL" a "Link with runtime packages"
musíš do adresáře přidat: BORLNDMM.dll a myslím cc3270.dll (cc####.dll)

 
Nahoru Odpovědět  +1 25.11.2018 10:46
Avatar
HONZ4
Člen
Avatar
HONZ4:25.11.2018 11:15

a možná i vcl70.bpl (vcl##.bpl - podle verze)
Je to už dlouho, přesně si už nevím, co bylo potřeba..

 
Nahoru Odpovědět  +1 25.11.2018 11:15
Avatar
HONZ4
Člen
Avatar
HONZ4:25.11.2018 11:48

na počítači ve kterém to běží spusť například tuto aplikaci (nebo nějakou jinou, která toto umožňuje). Tím zjistíš, které knihovny to využívá, a chybějící doplň na pc, kde to nefunguje.

 
Nahoru Odpovědět  +1 25.11.2018 11:48
Avatar
Magda Stankova:26.11.2018 9:17

Všem moc děkuji, je to vyřešeno. Musím tam dodat ještě borlndmm.dll, cc3260mt.dll, cc3260mt.dll a je to OK

 
Nahoru Odpovědět 26.11.2018 9:17
Avatar
Magda Stankova:26.11.2018 9:22

Ještě oprava chyběla rtl60.bpl. Na počítači, kde není problém mám nainstalovaný borland. Asi jsou příslušné knihovny nalezeny v adresáři borlandu. Nevím.

 
Nahoru Odpovědět 26.11.2018 9:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.