我可以在ASP.NET Web应用程序中使用未编译的C ++代码吗?

时间:2012-02-25 13:48:01

标签: c# c++ asp.net .net-4.0

我有一个问题,希望你能帮助我。

我创建了ASP.NET 4.0 Web应用程序。我还在其他应用程序中生成了.cpp文件。此.cpp文件包含函数,这些函数始终返回相同数量的变量,并始终使用相同数量的参数。

我需要做的是能够在我的网络应用程序中使用此功能。

但真正的问题是我需要能够在运行app时替换这些功能。我的意思是管理员应该能够登录,上传新的cpp文件,这将取代旧的功能。新的将具有相同的名称,参数和结果编号,但将以不同的方式进行计算。

有什么办法可以实现吗?

感谢您的帮助! 马修

3 个答案:

答案 0 :(得分:2)

将cpp代码预编译到dll中,然后让admin上传dll。使用[DllImport(“”)]指令从c#app引用dll。

答案 1 :(得分:1)

C ++需要以某种方式编译。您可以在ASP.NET应用程序中使用用C ++编写的已编译的dll,但仍然需要为ASP编译代码才能使用它。

然后可以加载和卸载已编译的DLL以适应对函数的更改。您甚至可以让ASP.NET服务器以某种方式编译文件,但代码仍然需要可编译为DLL以使其可执行。

答案 2 :(得分:1)

您需要通过另一个dll公开C ++代码。

首选是pinvoke。参见:

How to set up a C++ function so that it can be used by p/invoke?

这里也包括: http://msdn.microsoft.com/en-us/library/aa446538.aspx

从技术上讲,您也可以通过COM公开或者使用托管C ++进行编写,但如果您只是尝试公开一些C ++函数,则这些都是过度的。