iT邦幫忙

0

Windows service無法呼叫DLL

  • 分享至 

  • xImage

各位好,
目前照著底下教學create windows service app, 也成功執行。
但想要在timer裡呼叫DLL裡的function卻失敗, 以下是相關code, 使用VS2017 build
DLL:

//MyDll.h
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif

extern "C" MYDLL_API int MyFunc();

//MyDll.cpp
#include "pch.h"
#include "framework.h"
#include "MyDll.h"

int MyFunc()
{
	return 1;
}

Windows Service:

// Add reference before build

using System.Runtime.InteropServices;

[DllImport("MyDll.dll", EntryPoint = "MyFunc", CallingConvention = CallingConvention.Cdecl)]
public static extern int MyFunc();
        
// 於timer中呼叫
int tmp = MyFunc();

此DLL在C# Winform可以被呼叫, 但在Windows service卻無法, 也沒有錯誤訊息,
使用debugger執行到該行會顯示"Timer.cs not found"

Create a Windows service app

rofellos iT邦新手 2 級 ‧ 2022-03-15 16:24:39 檢舉
就字面上意思 應該先查Timer
阿薩姆 iT邦新手 4 級 ‧ 2022-03-15 17:28:14 檢舉
Hi,
但我若在OnStart()呼叫反而會有不同.cs not found, 這看起來比較像是debug時找不到code? 而不是timer object造成的問題

不曉得windows service是否有相關的限制?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答