Pracujem na projekte, ktorý si vyžadoval veľké množstvo vyhľadávaní v slovníku. Ak chcete skúsiť vylepšiť rýchlosť, pokúšal som sa nahradiť slovníky unordered_maps z libcpp.
#!python
#cython: boundscheck=False, wraparound=False, infer_types=True,cdivision = True
from libcpp.unordered_map cimport unordered_map
Keď sa však pokúšam kompilovať s gcc na príkazovom riadku, kompilácia zlyhá
CAStar2.c:482:19: fatal error: utility: No such file or directory
#include <utility>
^
compilation terminated.
Zdá sa, že kompilátor nemôže nájsť viac požadovaných súborov.
Ako by som to ukázal na tieto súbory?
odpovede:
0 pre odpoveď č. 1Súbor C vytvorený pomocou cythonu musí byť zostavený pomocou setuptools Extension
.
Ak manuálne kompilujete všetky adresáre include a lib, ktoré by inak použili setuptools, je potrebné zadať aj manuálne.
vidieť tu je dokumentácia cython setuptools a pre minimálnu kompiláciu z príkladu riadku cmd.
0 pre odpoveď č. 2
Ukazuje sa, že problém bol môj kompilátor nie je aktiváciu podporu pre c ++ 11, ktorý cython Zdá sa, že produkujú. Pridanie možnosti -std=c++11
všetko kompilované normálne. Vďaka všetkým, ktorí pomáhali.