Open lucassrfreire opened 6 years ago
No :/ Actually I’m working with precompiled files now..
Unfortunately not. I’m using the 2.3.0 version available on https://github.com/openalpr/openalpr/releases
@lucassrfreire managed to solve? Here I received the same error.
This problem can be solved by prefixing all function declarations in openalpr\src\openalpr\alpr_c.h
by OPENALPRC_DLL_EXPORT
// Initializes the openALPR library and returns a pointer to the OpenALPR instance
OPENALPRC_DLL_EXPORT OPENALPR* openalpr_init(const char* country, const char* configFile, const char* runtimeDir);
// Returns 1 if the library was loaded successfully, 0 otherwise
OPENALPRC_DLL_EXPORT int openalpr_is_loaded(OPENALPR* instance);
// Set the country used for plate recognition
OPENALPRC_DLL_EXPORT void openalpr_set_country(OPENALPR* instance, const char* country);
// Update the prewarp setting without reloading the library
OPENALPRC_DLL_EXPORT void openalpr_set_prewarp(OPENALPR* instance, const char* prewarp_config);
// Update the detection mask without reloading the library
OPENALPRC_DLL_EXPORT void openalpr_set_mask(OPENALPR* instance, unsigned char* pixelData, int bytesPerPixel, int imgWidth, int imgHeight);
// Enable/disable region detection. Pass a 0 or 1
OPENALPRC_DLL_EXPORT void openalpr_set_detect_region(OPENALPR* instance, int detectRegion);
OPENALPRC_DLL_EXPORT void openalpr_set_topn(OPENALPR* instance, int topN);
OPENALPRC_DLL_EXPORT void openalpr_set_default_region(OPENALPR* instance, const char* region);
// Recognizes the provided image and responds with JSON.
// Image is expected to be raw pixel data (BGR, 3 channels)
// Caller must call free() on the returned object
OPENALPRC_DLL_EXPORT char* openalpr_recognize_rawimage(OPENALPR* instance, unsigned char* pixelData, int bytesPerPixel, int imgWidth, int imgHeight, struct AlprCRegionOfInterest roi);
// Recognizes the encoded (e.g., JPEG, PNG) image. bytes are the raw bytes for the image data.
OPENALPRC_DLL_EXPORT char* openalpr_recognize_encodedimage(OPENALPR* instance, unsigned char* bytes, long long length, struct AlprCRegionOfInterest roi);
// Frees a char* response that was provided from a recognition request.
// This is required for interoperating with managed languages (e.g., C#) that can't free the memory themselves
OPENALPRC_DLL_EXPORT void openalpr_free_response_string(char* response);
// Free the memory for the OpenALPR instance created with openalpr_init
OPENALPRC_DLL_EXPORT void openalpr_cleanup(OPENALPR* instance);
This problem can be solved by prefixing all function declarations in
openalpr\src\openalpr\alpr_c.h
byOPENALPRC_DLL_EXPORT
// Initializes the openALPR library and returns a pointer to the OpenALPR instance OPENALPRC_DLL_EXPORT OPENALPR* openalpr_init(const char* country, const char* configFile, const char* runtimeDir); // Returns 1 if the library was loaded successfully, 0 otherwise OPENALPRC_DLL_EXPORT int openalpr_is_loaded(OPENALPR* instance); // Set the country used for plate recognition OPENALPRC_DLL_EXPORT void openalpr_set_country(OPENALPR* instance, const char* country); // Update the prewarp setting without reloading the library OPENALPRC_DLL_EXPORT void openalpr_set_prewarp(OPENALPR* instance, const char* prewarp_config); // Update the detection mask without reloading the library OPENALPRC_DLL_EXPORT void openalpr_set_mask(OPENALPR* instance, unsigned char* pixelData, int bytesPerPixel, int imgWidth, int imgHeight); // Enable/disable region detection. Pass a 0 or 1 OPENALPRC_DLL_EXPORT void openalpr_set_detect_region(OPENALPR* instance, int detectRegion); OPENALPRC_DLL_EXPORT void openalpr_set_topn(OPENALPR* instance, int topN); OPENALPRC_DLL_EXPORT void openalpr_set_default_region(OPENALPR* instance, const char* region); // Recognizes the provided image and responds with JSON. // Image is expected to be raw pixel data (BGR, 3 channels) // Caller must call free() on the returned object OPENALPRC_DLL_EXPORT char* openalpr_recognize_rawimage(OPENALPR* instance, unsigned char* pixelData, int bytesPerPixel, int imgWidth, int imgHeight, struct AlprCRegionOfInterest roi); // Recognizes the encoded (e.g., JPEG, PNG) image. bytes are the raw bytes for the image data. OPENALPRC_DLL_EXPORT char* openalpr_recognize_encodedimage(OPENALPR* instance, unsigned char* bytes, long long length, struct AlprCRegionOfInterest roi); // Frees a char* response that was provided from a recognition request. // This is required for interoperating with managed languages (e.g., C#) that can't free the memory themselves OPENALPRC_DLL_EXPORT void openalpr_free_response_string(char* response); // Free the memory for the OpenALPR instance created with openalpr_init OPENALPRC_DLL_EXPORT void openalpr_cleanup(OPENALPR* instance);
I did that and received new errors.
Did anybody else got these?
"C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Release\x64\openalpr\ALL_BUILD.vcxproj" (default targ et) (1) -> "C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Release\x64\openalpr\alpr.vcxproj" (default target) ( 3) -> "C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Release\x64\openalpr\openalpr\support\support.vcxproj " (default target) (5) -> (ClCompile target) -> C:\Sistemas\OpenALPR\openalpr\src\openalpr\support\filesystem.cpp(165): error C2079: 'pathstream' uses undefined clas s 'std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>>' [C:\Sistemas\OpenALPR\openalpr\windows\bu ild\artifacts\2.2.0\v140\Release\x64\openalpr\openalpr\support\support.vcxproj] C:\Sistemas\OpenALPR\openalpr\src\openalpr\support\filesystem.cpp(166): error C2297: '<<': illegal, right operand has type 'const char [7]' [C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Release\x64\openalpr\openalpr\ support\support.vcxproj] C:\Sistemas\OpenALPR\openalpr\src\openalpr\support\filesystem.cpp(166): error C2297: '<<': illegal, right operand has type 'const char *' [C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Release\x64\openalpr\openalpr\su pport\support.vcxproj] C:\Sistemas\OpenALPR\openalpr\src\openalpr\support\filesystem.cpp(167): error C2228: left of '.str' must have class/s truct/union [C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Release\x64\openalpr\openalpr\support\sup port.vcxproj]
Any known solution? Full log file: openalpr_windows_build_log.txt
I included a reference to sstream on filesystem.cpp and that seems to have solved the issue above.
Although now the script return new problems. At the end he fails do copy some file because they're missing.
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:01.78
Copy-Build-Result-To: C:\Sistemas\OpenALPR\openalpr\windows\build\dist\2.2.0\v140\Release\x64
Copy-Item : Não é possível localizar o caminho 'C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Releas
e\x64\openalpr\statedetection\Release\statedetection.lib' porque ele não existe.
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:678 caractere:5
+ Copy-Item $OpenALPROutputDir\statedetection\$Configuration\stated ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Sistemas\Ope...tedetection.lib:String) [Copy-Item], ItemNotFoundExce
ption
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand
Copy-Item : Não é possível localizar o caminho 'C:\Sistemas\OpenALPR\openalpr\config\openalpr.conf.in' porque ele não
existe.
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:680 caractere:5
+ Copy-Item $OpenALPRDir\config\openalpr.conf.in -Force $Destinatio ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Sistemas\Ope...penalpr.conf.in:String) [Copy-Item], ItemNotFoundExce
ption
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand
OpenALPRNet: Release, x64, v140
Copy-Item : Não é possível localizar o caminho 'C:\Sistemas\OpenALPR\openalpr\src\bindings\csharp\openalpr-net' porque
ele não existe.
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:620 caractere:9
+ Copy-Item $OpenALPRNetDir -Recurse -Force $OpenALPRNetDirOutp ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Sistemas\Ope...rp\openalpr-net:String) [Copy-Item], ItemNotFoundExce
ption
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand
Get-Content : Não é possível localizar o caminho
'C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Release\x64\openalpr-net\openalpr-net.vcxproj'
porque ele não existe.
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:264 caractere:16
+ $Content = Get-Content $Project
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Sistemas\Ope...lpr-net.vcxproj:String) [Get-Content], ItemNotFoundEx
ception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
Exceção ao chamar "LoadXml" com "1" argumento(s): "Elemento raiz inexistente."
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:266 caractere:5
+ $Xml.LoadXml($Content)
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
Não é possível chamar um método em uma expressão de valor nulo.
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:272 caractere:5
+ $Nodes = $Root.SelectNodes($Xpath, $NamespaceManager)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Não é possível chamar um método em uma expressão de valor nulo.
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:274 caractere:5
+ $Properties = @{
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Get-Content : Não é possível localizar o caminho
'C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Release\x64\openalpr-net\openalpr-net.vcxproj'
porque ele não existe.
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:264 caractere:16
+ $Content = Get-Content $Project
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Sistemas\Ope...lpr-net.vcxproj:String) [Get-Content], ItemNotFoundEx
ception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
Exceção ao chamar "LoadXml" com "1" argumento(s): "Elemento raiz inexistente."
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:266 caractere:5
+ $Xml.LoadXml($Content)
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
Não é possível chamar um método em uma expressão de valor nulo.
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:272 caractere:5
+ $Nodes = $Root.SelectNodes($Xpath, $NamespaceManager)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Não é possível chamar um método em uma expressão de valor nulo.
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:274 caractere:5
+ $Properties = @{
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Get-Content : Não é possível localizar o caminho
'C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Release\x64\openalpr-net\AssemblyInfo.cpp' porque
ele não existe.
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:422 caractere:23
+ $newContent = Get-Content($assemblyInfo) | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Sistemas\Ope...ssemblyInfo.cpp:String) [Get-Content], ItemNotFoundEx
ception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
Die : Expected to replace the version number in 3 places in AssemblyInfo.cs (AssemblyInformationalVersionAttribute,
AssemblyFileVersionAttribute, AssemblyVersionAttribute) but actually replaced it in 0
No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:440 caractere:13
+ Die "Expected to replace the version number in 3 places i ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Die
Any Ideas?
@serra-caio This copy failed with me too. I think no problem at all. you can find DLLs and exe in bin directory.
When you run the application, you will need files from the official release to be copied also to bin (manually)
@serra-caio
I included a reference to sstream on filesystem.cpp and that seems to have solved the issue above.
Although now the script return new problems. At the end he fails do copy some file because they're missing.
Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:01.78 Copy-Build-Result-To: C:\Sistemas\OpenALPR\openalpr\windows\build\dist\2.2.0\v140\Release\x64 Copy-Item : Não é possível localizar o caminho 'C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Releas e\x64\openalpr\statedetection\Release\statedetection.lib' porque ele não existe. No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:678 caractere:5 + Copy-Item $OpenALPROutputDir\statedetection\$Configuration\stated ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (C:\Sistemas\Ope...tedetection.lib:String) [Copy-Item], ItemNotFoundExce ption + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand Copy-Item : Não é possível localizar o caminho 'C:\Sistemas\OpenALPR\openalpr\config\openalpr.conf.in' porque ele não existe. No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:680 caractere:5 + Copy-Item $OpenALPRDir\config\openalpr.conf.in -Force $Destinatio ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (C:\Sistemas\Ope...penalpr.conf.in:String) [Copy-Item], ItemNotFoundExce ption + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand OpenALPRNet: Release, x64, v140 Copy-Item : Não é possível localizar o caminho 'C:\Sistemas\OpenALPR\openalpr\src\bindings\csharp\openalpr-net' porque ele não existe. No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:620 caractere:9 + Copy-Item $OpenALPRNetDir -Recurse -Force $OpenALPRNetDirOutp ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (C:\Sistemas\Ope...rp\openalpr-net:String) [Copy-Item], ItemNotFoundExce ption + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand Get-Content : Não é possível localizar o caminho 'C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Release\x64\openalpr-net\openalpr-net.vcxproj' porque ele não existe. No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:264 caractere:16 + $Content = Get-Content $Project + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (C:\Sistemas\Ope...lpr-net.vcxproj:String) [Get-Content], ItemNotFoundEx ception + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand Exceção ao chamar "LoadXml" com "1" argumento(s): "Elemento raiz inexistente." No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:266 caractere:5 + $Xml.LoadXml($Content) + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException Não é possível chamar um método em uma expressão de valor nulo. No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:272 caractere:5 + $Nodes = $Root.SelectNodes($Xpath, $NamespaceManager) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Não é possível chamar um método em uma expressão de valor nulo. No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:274 caractere:5 + $Properties = @{ + ~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Get-Content : Não é possível localizar o caminho 'C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Release\x64\openalpr-net\openalpr-net.vcxproj' porque ele não existe. No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:264 caractere:16 + $Content = Get-Content $Project + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (C:\Sistemas\Ope...lpr-net.vcxproj:String) [Get-Content], ItemNotFoundEx ception + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand Exceção ao chamar "LoadXml" com "1" argumento(s): "Elemento raiz inexistente." No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:266 caractere:5 + $Xml.LoadXml($Content) + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException Não é possível chamar um método em uma expressão de valor nulo. No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:272 caractere:5 + $Nodes = $Root.SelectNodes($Xpath, $NamespaceManager) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Não é possível chamar um método em uma expressão de valor nulo. No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:274 caractere:5 + $Properties = @{ + ~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Get-Content : Não é possível localizar o caminho 'C:\Sistemas\OpenALPR\openalpr\windows\build\artifacts\2.2.0\v140\Release\x64\openalpr-net\AssemblyInfo.cpp' porque ele não existe. No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:422 caractere:23 + $newContent = Get-Content($assemblyInfo) | ForEach-Object { + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (C:\Sistemas\Ope...ssemblyInfo.cpp:String) [Get-Content], ItemNotFoundEx ception + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand Die : Expected to replace the version number in 3 places in AssemblyInfo.cs (AssemblyInformationalVersionAttribute, AssemblyFileVersionAttribute, AssemblyVersionAttribute) but actually replaced it in 0 No C:\Sistemas\OpenALPR\openalpr\windows\build.ps1:440 caractere:13 + Die "Expected to replace the version number in 3 places i ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Die
Any Ideas?
The file $OpenALPRDir\config\openalpr.conf.in
used in the build doesn't exist, but $OpenALPRDir\config\openalpr.conf
does... I know '.in' extention is an input file containing text; it's simplistic but I'd try changing the build to point to the .conf
file that exists but I don't know how to reference the stream to get past the pathstream error you mentioned, would you be able to advise with that?
Following my previous reply, I got 0 errors on the build :) so I now have a vs solution. I can open. I now get an error when building where cmake is trying to find some kind of path for opencv
Hey Guys. I'm already working in a project using the 2.3 release, but i need some new features available on the last version. So i've tried to compile it and i'm receaving some errors on openalpr files. I've tried to Debug the files on VS manually but no success, with the same errors on those projects. I think i should make some changes in the structure of this files but I dont know where. Can you guys help me to solve this issues or instruct me how is the right way to fix it?
This is the errors showed on PowerShell during build:
On alpr.log i receive this error too:
"LINK : fatal error LNK1104: cannot open file 'openalpr\Debug\openalpr-static.lib'"
Thanks a lot!