簡體   English   中英

從Azure Worker Role調用x86 dll

[英]Invoke x86 dll from Azure Worker Role

我創建了一個Azure Worker角色項目。 該項目的目標機器必須是x64機器。 我應該從worker角色調用Stasm和OpenCV dll。 但我認為它們可以在x86機器上編譯。 我該怎么辦?

基本上,您嘗試在工作者角色中使用本機C ++ DLL,因此從技術上講,您希望訪問工作者角色中的本機模塊。 我不認為OpenCV x86二進制文件與Worker ole有任何問題而不是本機問題,需要額外的努力。

完全贊同@Sandrino建議但是想在他的#1)建議中添加內容。 當您創建包含使用OpenCV的所有邏輯的本機EXE時,最好直接從ServiceDefinition中的ProgramEntryPoint設置啟動,並且您不需要在Worker角色中添加任何代碼,除非您有TCP / IP端點並且想在你的應用程序中使用。 服務定義如下:

<WorkerRole name="Your_WorkerRole" vmsize="Small">
 <Runtime executionContext="limited">
  <EntryPoint>
    <ProgramEntryPoint commandLine="_your_application_.exe _Parameters_" setReadyOnProcessStart="true" />
  </EntryPoint>
 </Runtime>
 <Endpoints>
   <InputEndpoint name="_Your_Endpoint_" protocol="tcp" port="80" />
 </Endpoints> 

我個人認為上面的第二種選擇可能與#1相比有點過分。

工作者角色過程確實是x64。 但這只是針對那個特定的過程。 您可以讓其他進程與這些x86 dll交互:

  • 也許你可以在控制台應用程序(x86)中編寫所有邏輯並將其包含在worker角色項目中。 然后在WorkerRole.cs類的Run方法中,您可以簡單地啟動該過程(使用Process.Start)來完成實際工作,而您的WorkerRole.cs類只能用作入口點。
  • 您還可以在外部進程中簡單地托管WCF服務(這可能是在x86中編譯的簡單控制台應用程序)。 然后,使用NetTcpBinding或NetNamedPipeBinding之類的綁定,您可以從您的輔助角色調用該服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM